{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Chapter 15 – Processing Sequences Using RNNs and CNNs**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "_This notebook contains all the sample code in chapter 15._"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setup"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, let's import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures. We also check that Python 3.5 or later is installed (although Python 2.x may work, it is deprecated so we strongly recommend you use Python 3 instead), as well as Scikit-Learn ≥0.20 and TensorFlow ≥2.0-preview."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Python ≥3.5 is required\n",
    "import sys\n",
    "assert sys.version_info >= (3, 5)\n",
    "\n",
    "# Scikit-Learn ≥0.20 is required\n",
    "import sklearn\n",
    "assert sklearn.__version__ >= \"0.20\"\n",
    "\n",
    "# TensorFlow ≥2.0-preview is required\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "assert tf.__version__ >= \"2.0\"\n",
    "\n",
    "# Common imports\n",
    "import numpy as np\n",
    "import os\n",
    "\n",
    "# to make this notebook's output stable across runs\n",
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "# To plot pretty figures\n",
    "%matplotlib inline\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "mpl.rc('axes', labelsize=14)\n",
    "mpl.rc('xtick', labelsize=12)\n",
    "mpl.rc('ytick', labelsize=12)\n",
    "\n",
    "# Where to save the figures\n",
    "PROJECT_ROOT_DIR = \".\"\n",
    "CHAPTER_ID = \"rnn\"\n",
    "IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID)\n",
    "os.makedirs(IMAGES_PATH, exist_ok=True)\n",
    "\n",
    "def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n",
    "    path = os.path.join(IMAGES_PATH, fig_id + \".\" + fig_extension)\n",
    "    print(\"Saving figure\", fig_id)\n",
    "    if tight_layout:\n",
    "        plt.tight_layout()\n",
    "    plt.savefig(path, format=fig_extension, dpi=resolution)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Basic RNNs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Generate the Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_time_series(batch_size, n_steps):\n",
    "    freq1, freq2, offsets1, offsets2 = np.random.rand(4, batch_size, 1)\n",
    "    time = np.linspace(0, 1, n_steps)\n",
    "    series = 0.5 * np.sin((time - offsets1) * (freq1 * 10 + 10))  #   wave 1\n",
    "    series += 0.2 * np.sin((time - offsets2) * (freq2 * 20 + 20)) # + wave 2\n",
    "    series += 0.1 * (np.random.rand(batch_size, n_steps) - 0.5)   # + noise\n",
    "    return series[..., np.newaxis].astype(np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "\n",
    "n_steps = 50\n",
    "series = generate_time_series(10000, n_steps + 1)\n",
    "X_train, y_train = series[:7000, :n_steps], series[:7000, -1]\n",
    "X_valid, y_valid = series[7000:9000, :n_steps], series[7000:9000, -1]\n",
    "X_test, y_test = series[9000:, :n_steps], series[9000:, -1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((7000, 50, 1), (7000, 1))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape, y_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure time_series_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_series(series, y=None, y_pred=None, x_label=\"$t$\", y_label=\"$x(t)$\"):\n",
    "    plt.plot(series, \".-\")\n",
    "    if y is not None:\n",
    "        plt.plot(n_steps, y, \"bx\", markersize=10)\n",
    "    if y_pred is not None:\n",
    "        plt.plot(n_steps, y_pred, \"ro\")\n",
    "    plt.grid(True)\n",
    "    if x_label:\n",
    "        plt.xlabel(x_label, fontsize=16)\n",
    "    if y_label:\n",
    "        plt.ylabel(y_label, fontsize=16, rotation=0)\n",
    "    plt.hlines(0, 0, 100, linewidth=1)\n",
    "    plt.axis([0, n_steps + 1, -1, 1])\n",
    "\n",
    "fig, axes = plt.subplots(nrows=1, ncols=3, sharey=True, figsize=(12, 4))\n",
    "for col in range(3):\n",
    "    plt.sca(axes[col])\n",
    "    plot_series(X_valid[col, :, 0], y_valid[col, 0],\n",
    "                y_label=(\"$x(t)$\" if col==0 else None))\n",
    "save_fig(\"time_series_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Computing Some Baselines"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Naive predictions (just predict the last observed value):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.020211367"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = X_valid[:, -1]\n",
    "np.mean(keras.losses.mean_squared_error(y_valid, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Linear predictions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 0s 69us/sample - loss: 0.1015 - val_loss: 0.0551\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0384 - val_loss: 0.0267\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0205 - val_loss: 0.0161\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 0s 33us/sample - loss: 0.0133 - val_loss: 0.0119\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0104 - val_loss: 0.0099\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0090 - val_loss: 0.0088\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0081 - val_loss: 0.0079\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0073 - val_loss: 0.0074\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0067 - val_loss: 0.0066\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 0s 29us/sample - loss: 0.0062 - val_loss: 0.0062\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0058 - val_loss: 0.0058\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0055 - val_loss: 0.0054\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0052 - val_loss: 0.0052\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0050 - val_loss: 0.0050\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0048 - val_loss: 0.0048\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0047 - val_loss: 0.0046\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0045 - val_loss: 0.0047\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0044 - val_loss: 0.0044\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 0s 29us/sample - loss: 0.0043 - val_loss: 0.0042\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 0s 29us/sample - loss: 0.0042 - val_loss: 0.0042\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.Flatten(input_shape=[50, 1]),\n",
    "    keras.layers.Dense(1)\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\")\n",
    "history = model.fit(X_train, y_train, epochs=20,\n",
    "                    validation_data=(X_valid, y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2000/2000 [==============================] - 0s 16us/sample - loss: 0.0042\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.00417404793202877"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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iw0bNrB161aio6Mr7DxFl1AODAz83X7nudZjBZynSZMm7Nq1i1dffZXq1avz8MMP07Vr1/xrT4sXLyYpKYlevXrx/vvv06JFi0ItSW/xWoIRkTDgZuBJY0yGMWYdsAK4y031EcBMY8wBY8xBYCYwskid54DZWC2hcqtRK5BjYU21i0xd0pzdusHkyV5JLgC33HILISEhvPnmmyxYsIC777670Ifvxo0badKkCY8//jhdu3YlPj7e7cizC2ndujUbN24sVFb08bp163jooYe4/vrradOmDWFhYRw5ciR/f0BAAAEBATgcjouea/369b879mWXXVaqmC+kVq1a1K1b96LnCQ0N5cYbb2TWrFls3LiRH374odDr7tChA5MmTWLt2rX07NmTN954o8JiLClvdpG1APKMMQUHlX8PXOWmbhvXvoL18ls6InIF0AUYB9x2oZOKyFisFhH169cnMTHRbT2brRO/2poQ9t13bCmmDkBGRkaxx/A2f4oF/CueSy2WiIgI0tPTyx2Lw+GokOOUxi233MJTTz1Famoqw4YNK3T+2NhY9u/fz4IFC+jcuTOrVq1i+fLlAPn1zp49e8HHY8eOZfz48bRp04aEhATef/99tmzZQp06dfLrxMXF8frrr9O6dWvS09N58sknCQ4OJjs7O79Oo0aN+PTTT2nfvj1BQUHUrFnzd+caP3489957L61bt6ZPnz75XX7Lly8nPT2dvLw8AM6cOVPodRpjOHv2bLE/++zsbJxOZ/7+Bx98kOnTpxMdHU27du1YunQpGzduZObMmaSnp7N48WIAOnfuTLVq1Xj77bcJDAykQYMGbN26lcWLF3PdddcRHR3Nnj17+PHHH+nVq1ex5z979qxn/l7KutZyaTegN3CkSNkYINFNXQfQqsDjeMAAAgQAm4Hurn2JwOiSxNC5c+di152+5hpjltcbb0x4uDFOZ7H1LrW13iuSP8VzqcVyoTXTS8Pba70bY8yWLVsMYHr06OE2nkcffdTUqVPHVK9e3dx8883mlVdeMQEBAfl1/v3vf5uIiIhiHxtjzNSpU03dunVNWFiYGT58uHniiSdM8+bN8/f/73//M127djXBwcGmefPm5q233jItW7Y0U6dOza+zZMkSExcXZ+x2e/5z3Z3rlVdeMbGxsSYwMNDExcWZefPm5e/Lzc01gHn//fcLPadhw4bm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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_learning_curves(loss, val_loss):\n",
    "    plt.plot(np.arange(len(loss)) + 0.5, loss, \"b.-\", label=\"Training loss\")\n",
    "    plt.plot(np.arange(len(val_loss)) + 1, val_loss, \"r.-\", label=\"Validation loss\")\n",
    "    plt.gca().xaxis.set_major_locator(mpl.ticker.MaxNLocator(integer=True))\n",
    "    plt.axis([1, 20, 0, 0.05])\n",
    "    plt.legend(fontsize=14)\n",
    "    plt.xlabel(\"Epochs\")\n",
    "    plt.ylabel(\"Loss\")\n",
    "    plt.grid(True)\n",
    "\n",
    "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = model.predict(X_valid)\n",
    "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Using a Simple RNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 3s 368us/sample - loss: 0.0960 - val_loss: 0.0482\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 2s 262us/sample - loss: 0.0366 - val_loss: 0.0293\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 2s 260us/sample - loss: 0.0251 - val_loss: 0.0216\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 2s 260us/sample - loss: 0.0196 - val_loss: 0.0175\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 2s 261us/sample - loss: 0.0165 - val_loss: 0.0150\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 2s 272us/sample - loss: 0.0145 - val_loss: 0.0133\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 2s 268us/sample - loss: 0.0132 - val_loss: 0.0123\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 2s 277us/sample - loss: 0.0123 - val_loss: 0.0116\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 2s 276us/sample - loss: 0.0118 - val_loss: 0.0112\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 2s 269us/sample - loss: 0.0116 - val_loss: 0.0110\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 2s 260us/sample - loss: 0.0114 - val_loss: 0.0109\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 2s 260us/sample - loss: 0.0114 - val_loss: 0.0109\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 2s 258us/sample - loss: 0.0114 - val_loss: 0.0109\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 2s 259us/sample - loss: 0.0114 - val_loss: 0.0109\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 2s 261us/sample - loss: 0.0114 - val_loss: 0.0109\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 2s 265us/sample - loss: 0.0114 - val_loss: 0.0109\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 2s 272us/sample - loss: 0.0114 - val_loss: 0.0109\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 2s 273us/sample - loss: 0.0114 - val_loss: 0.0110\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 2s 268us/sample - loss: 0.0114 - val_loss: 0.0109\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 2s 265us/sample - loss: 0.0114 - val_loss: 0.0108\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.SimpleRNN(1, input_shape=[None, 1])\n",
    "])\n",
    "\n",
    "optimizer = keras.optimizers.Adam(lr=0.005)\n",
    "model.compile(loss=\"mse\", optimizer=optimizer)\n",
    "history = model.fit(X_train, y_train, epochs=20,\n",
    "                    validation_data=(X_valid, y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2000/2000 [==============================] - 0s 73us/sample - loss: 0.0108\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.010848855562508107"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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+ul8rWvWrFmMHDmSV199lSuvvJI5c+YwduzYXC2P48eP06dPHyZMmADAxIkTueGGG9i8eTOVKlXi22+/JSoqiqlTp3L99dcTFOR+1zhv3jyGDBnC+PHj6dy5M5988gkDBgygevXquYZ0fuaZZxgzZgxjxozhzTffpG/fvnTo0IEaNWrka5smTpzISy+9xJtvvsnll1/O9OnT6d69O2vWrKFJkyb85z//Yfz48cyePZvGjRuzd+9evv32W8BJ4t26dWPgwIHMmjWLtLQ0Vq9enf0/8KbS3YKB7BsuL9lfsJHqjClxjh51kgs4f48e9ejq+vXrx44dO1i0aFF22dtvv821115LzZo1s8tGjBhB27ZtqVOnDl27dmXo0KEF+sU/fvx47r33Xu677z4aNGjAiBEjaNGiRa46nTt3pnfv3sTGxhIbG8ukSZMICAjgs88+A+Diiy8GnLFZqlWrRuWzdEw4duxY+vbty6BBg2jQoAFDhgyhV69ejBkzJle9vn37cuedd1K/fn1Gjx4NOKNY5teECRN4/PHH6dWrFw0bNmT06NHEx8czduxYALZv305UVBTXXHMNtWrVolWrVgwaNAiAw4cPc+zYMW6++Wbq1atHo0aN6N27Nw0bNsz3+ouLV1swIhIJvA1cCxwAhqnqLDf1BHgByOplbjIw1DU2Qc569wDvAPep6uRCBdWyJZkIjY6uBG44b3Vj/EI+WxK5JCVBp06QmgohITBzpkfHTo6JieHKK69kypQpXHvttezevZvPPvuMOXPm5Ko3d+5cJkyYwJYtW0hOTiY9Pb1Av7Y3bNjA4MGDc5UlJCQwb9687Od79+5l+PDhJCYmsnfvXjIyMjh58iQ7duwo0DZt2LAhe0eepX379owYMSJXWdOmTbMfh4SEULlyZfbt25evdRw6dIj9+/fTrl27XOUdOnTgyy+/BOD2229n4sSJXHLJJVx33XVcf/313HzzzYSEhFClShV69+5N586d6dSpE506deK2227Ld+upOHm7BTMJSAWqAncBr4uIu4EVBgC3AM2ApsBNwP05K4hIJeAJYF2RIipfngNVGxOXsZJTp4q0JGP8W0ICJ+fPh1GjYPFijyaXLP369eOjjz7i0KFDTJs2jcjISLp165Y9PykpibvuuosuXbqwYMECfvjhB5599llSU1OLNY7evXvzww8/MH78eJYvX86aNWuIiooqtvXkHUI5ODj4T/Mzs1qPxbCe2rVrs2nTJl577TXKlSvHww8/TKtWrbLPPc2YMYOkpCTat2/Phx9+SIMGDXK1JL3FawlGRMKBHsBwVU1W1aXAfOBuN9X7AONUdaeq7gLGAX3z1HkemIDTEiqSg/Xiac0qDh/S81c2pgTLjI+HYcO8klwAevbsSZkyZXj33XeZMmUK99xzT66d74oVK6hduzZPPvkkrVq1IiYmxu2VZ+cSGxvLihUrcpXlfb506VIeeughunTpQuPGjQkPD2fPnj3Z8wMDAwkMDCQjI+O861q2bNmfln3ppZcWKOZziYyM5OKLLz7vesLCwrjpppsYP348K1as4Keffsq13c2bN2fo0KF8/fXXtGvXjunTpxdbjPnlzUNkDYB0Vc15UfmPwJVu6jZ2zctZL7ulIyKtgZbAIOD/zrVSERmA0yKiatWqJCYm/qnOsciaxHKI92e8z0Vtzj0oTHJysttl+II/xQL+Fc+FFkuFChU4fvx4kWPJyMgoluUURM+ePXn66ac5cuQIvXr1yrX+unXrsmPHDqZMmUJcXBxffPEFc+fOBciud/r06XM+HzBgAIMHD6Zx48YkJCTw4Ycf8t1331G5cuXsOvXr12fq1KnExsZy/Phxhg8fTmhoKCkpKdl1atSowaeffkqzZs0ICQmhUqVKf1rX4MGD6devH7GxsXTs2DH7kN/cuXM5fvw46a6RC0+dOpVrO1WV06dPn/W9T0lJITMzM3v+gw8+yJgxY4iKiqJp06bMnj2bFStWMG7cOI4fP86MGTMAiIuLo2zZssybN4/g4GCqVavGmjVrmDFjBjfccANRUVFs2bKFn3/+mfbt2591/adPn/bM96WwYy0XdAI6AHvylN0HJLqpmwE0yvE8BlBAgEBgNdDGNS8R6J+fGOLi4tyOOb38jR9VQTc8NeOs41JnudDGei9O/hTPhRbLucZMLwhvj/Wuqvrdd98poG3btnUbz2OPPaaVK1fWcuXKaY8ePfTVV1/VwMDA7Dr//ve/tUKFCmd9rqo6atQovfjiizU8PFx79+6tTz31lNarVy97/vfff6+tWrXS0NBQrVevns6cOVMbNmyoo0aNyq4za9YsrV+/vgYFBWW/1t26Xn31Va1bt64GBwdr/fr1dfLkydnz0tLSFNAPP/ww12uio6P15ZdfPut79OSTT2qzZs2ynx85ckSffvppjY6O1uDgYL3ssst0/vz52fPff/99jY+P1woVKmh4eLi2atVKFy5cqKqqu3fv1ltuuUWrV6+uISEhWqtWLR06dKimpaWddf3n+nwBq7Ww+/3CvrDAK4LLgZN5yv4OLHBT9yjQOsfzOOC46/GDwJQc84qcYFavTNfjhOuWroPP+iZnudB2XMXJn+K50GIpyQnmXPwpntIci6cSjDdP8m8CgkQkJkdZM9yfpF/nmueuXiegu4jsEZE9QFtgnIi8WtjAKlUOZDUtKb/BLlU2xpji4rUEo6ongA+AZ0UkXETaAd2AGW6qTwceEZFoEYnCaelMc83rC8QCzV3TauAZ4MnCxhYZCatoTaXta+AcdxAbY4zJP29fpjwICAP2AbOBv6rqOhHpICLJOeq9CSwAfgbWAgtdZajqEVXdkzXhXPZ8TFULfddYRASsIp6gjNSC3x1tjDHGLa/eaKmqh3Dub8lb/g1QLsdzBf7hms63zI5FjSsgADZWjIcjwMqV2Xf3G2OMKTzrKsbl1EU1OBQW5SQYY/yQqt2nZYqfJz9XlmBcIiNhQ0S8JRjjlwIDA0lLS/N1GOYClJaWdtbOPYvKEoxLpUqwJiQetmyBA0XuHMCYYlWxYkX27t1bLN2NGJMlMzOTvXv3UqEgvWoXgHXX71KpEiRlxvMAwKpV0KWLr0MyJlvlypXZuXMnGzduLNJyTp8+TZkyZYopqqLzp3hKayzh4eFn7T26qCzBuERGwienWzpn/FeutARj/EpAQAC1atUq8nISExO5/PLLiyGi4uFP8Vgsxc8OkblUqgQ7j5RDGze28zDGGFMMLMG4HDsGGRmwu0a8c4jMrtgxxpgisQSDMw7TW285j//5RTwcPgy//urboIwxpoSzBAMkJoKrl22Wpbtuslxl/ZIZY0xRWIIBOnaE0FDn8XouJSMs3M7DGGNMEVmCwRncb/FiuPlmyCCQU41bWoIxxpgisgTjkpAAkydDYCB8FxTvdHrpGs3OGGNMwVmCyeHii+Haa2HWlnhIS7OelY0xpggsweRx553w3/2uE/12mMwYYwrNEkwe3brB4bBoDodHW4IxxpgisASTR/nyTpJZlhaPWoIxxphCswTjxp13wtep8chvv8H+/b4OxxhjSiRLMG5cdx2sL2c3XBpjTFFYgnEjJATq3hZHBgGkfmOHyYwxpjAswZxFjz7lWEsTDn5qCcYYYwrDEsxZdOgAa8PjKb9hFdgogsYYU2CWYM4iIABC2sdTLu0Ih7/d7OtwjDGmxLEEcw6X9WsNwA9v2GEyY4wpKEsw59Cw+6WcCCjHkc8twRhjTEFZgjkHCQpkf+2W1Ny9kt9/93U0xhhTsliCOY+K18bTjB+ZN8N6VjbGmIKwBHMeFa+LJ4Q01kz9wdehGGNMiWIJ5nzinTv6IzevZN06H8dijDEliCWY84mKIiOqBm1kJbNn+zoYY4wpOSzB5ENgQjxXllnJrFmg6utojDGmZLAEkx/x8VQ/tZXjW/ezYUOEr6MxxpgSwRJMfrjOw3QIXsmiRVV8HIwxxpQMlmDyIy4OAgO5q/5KliypQnq6rwMyxhj/59UEIyKRIvKhiJwQke0icudZ6omIjBGRg65pjIiIa15lEVnmKj8iIkki0s6jgYeHQ5MmtA9dxZEjISxe7NG1GWPMBcHbLZhJQCpQFbgLeF1EGrupNwC4BWgGNAVuAu53zUsG7gUuBioBY4AFIhLk0cjj46mybRXlw1OYNcujazLGmAuC1xKMiIQDPYDhqpqsqkuB+cDdbqr3Acap6k5V3QWMA/oCqOppVd2oqpmAABk4iSbSoxvQujVy5Ah3tFzJBx/AqVMeXZsxxpR4nv3Vn1sDIF1VN+Uo+xG40k3dxq55OevlaumIyE9AIyAYmKyq+9ytVEQG4LSIqFq1KomJiYUKPjwggFZA14sX8VbyFbzwwjquump/oZZVXJKTkwu9PZ7gT/FYLO75UyzgX/FYLB6gql6ZgA7Anjxl9wGJbupmAI1yPI8BFJA89coAdwB98hNDXFycFlp6umpYmB6JjdWbKi/Xbt0Kv6jismTJEl+HkIs/xWOxuOdPsaj6VzwWi3vAai3kft+b52CSgbw3kUQAx/NRNwJIdm1sNnUOl80GhopIs+IM9k9WrYKUFCI2bOC9I504+N8kDh/26BqNMaZE82aC2QQEiUhMjrJmgLsevta55p2vXpZgoG6RIzyXxERQRYDgzFTaZyTy/vseXaMxxpRoXkswqnoC+AB4VkTCXZcWdwNmuKk+HXhERKJFJAr4OzANQETaiEh7EQkRkTAReRznqjTPjgrWsSOUKYPThFK21urIzJkeXaMxxpRo3r5MeRAQBuwDZgN/VdV1ItJBRJJz1HsTWAD8DKwFFrrKAEJxLnc+COwCugBdVXW3RyNPSIDFizncsiWSmck11wpffQU7d3p0rcYYU2J5NcGo6iFVvUVVw1W1lqrOcpV/o6rlctRTVf2Hqka6pn9knX9R1a9UtZmqlnfNu1JVv/bKBiQksO7ZZ6FKFe5Y+wSqyty5XlmzMcaUONZVTAFlhIXBk09SdsUSHmiwyG66NMaYs7AEUxj33w+1ajH81BN8/73yyy++DsgYY/yPJZjCCA2FkSOp+vtqesiH1ooxxhg3ipRgXFdxdRaR2sUVUIlx993QqBHjyj7FnJkZNhCZMcbkUaAEIyLTRGSQ63EIsAr4HNgoIjd4ID7/FRQE//wntU9sIOG3d/n2W18HZIwx/qWgLZjrgBWuxzcD5YFqwEjXVLrceivpzeN4lqeZOz3F19EYY4xfKWiCqYRzDwvA9cD76nQyOQe4tDgDKxFECBrzHLXZTpnpb5GR4euAjDHGfxQ0wewBmohIIE5rZpGrvByQVpyBlRjXXMP+xh156Pg/SVx4wtfRGGOM3yhogpkCzMW5uz4DyBrbMR4onRfrihDx6nNUZR+Hn3nF19EYY4zfKFCCUdVncUaTfAtor6qprlnpOCNLlkqhHRP4oeZNdP7+RU7tOuTrcIwxxi8U+DJlVX1fVV9W1Z05yt5R1Y+LN7SSJeWpfxLBMbY/+C9fh2KMMX6hoJcp/5+IXJvj+QgR2Skin4lI9eIPr+Ro1a8pH5W5g0vmvwJ//OHrcIwxxucK2oIZmfVARFoATwATcMZjGVd8YZU8gYGwvtezBGSkkTL8n74OxxhjfK6gCaY2sNH1uDvwkaq+CDwCdCrOwEqi6wbVYzL9CZzyFt+/95uvwzHGGJ8qaII5jXNzJTgJJesy5aM5ykuttDQYzVOkaRAbeo0kKcnXERljjO8UNMF8A4wTkeFAS+ATV3kD4PfiDKwk+uor+CMgmok8yB0Z77J2zlpfh2SMMT5T0AQzGEgFegIDc4wieQPwWXEGVhJ17Oh0tPwij3Oc8nRcPNzXIRljjM8U9D6Ynap6k2tEySk5yoeo6kPFH17J4hpVmb89exFTKj1KzLqP2Ldgpa/DMsYYnwgqzItE5GqcvscUWK+qS4o1qhIsIcGZNnUZwv6WE/n97ieIPLCYoEK908YYU3IV9D6YaBFZBXwBPA4MBRaJyEoRifJEgCVVg7jybL/rCeKOfsmMvovP/wJjjLnAFPQczAScPsjqq2pNVa0JxLjKJhR3cCVdy8kDORhek0tnPsGiL2xEMmNM6VLQBHMN8ICqbs0qUNXfgIdc80xOZcpQ7l8jiWcVM2/7iD17fB2QMcZ4T2GGTHb3U9x+np9F6H33kFKnIY8de4p77sqwMWOMMaVGQRPMYmCiiNTMKhCRWsB44MviDOyCERRE6IujuFTXU+3Lmbzwgq8DMsYY7yhognkICAd+E5HtIrId2AKUBR4s7uAuGD16oC1aMDb8aUYNT+Wbb3wdkDHGeF5B74P5HWgBdAHGuqYbgB4XKME9AAAdpUlEQVTAS8Ue3YUiIAAZPZoqJ7Yx9KJ/c8cdcOCAr4MyxhjPKsx4MKqqX6jqRNe0CKiAk2TM2Vx3HVxxBU/qKE7sO0HfvpCZ6eugjDHGcwpzkt8Uhgg89xzBB/fyyfUTWLgQXn7Z10EZY4znWILxpnbtoGtX2ix5jrkNR/DR40mstJ5kjDEXKEsw3vZ//4ckJ3PbxlF8ntmJMbckceSIr4Myxpjil68eskRk/nmqRBRDLKXDrl0ggqhSRk8Tu3cJ/fsnMG+ecxTNGGMuFPntgvFgPuZvPU8dA06f/mXKwOnTiCr3NPmeRu8rr78uDBrk6+CMMab45CvBqOpfPB1IqZHVp/+SJbB2LQ1nz+bDOg9z+5CXadtWaN7c1wEaY0zxsE7kfSGrT39VqFKFW155hVfCg/i/2/7Fd98L5Uv94NPGmAuBV0/yi0ikiHwoIidcPQHceZZ6IiJjROSgaxoj4pyhEJEGIvKxiOwXkUMi8pmINPTmdhQbEeda5QceYOCJcfTbPIyB9ytqPbsZYy4A3r6KbBLOkMtVgbuA10WksZt6A4BbgGZAU+Am4H7XvIrAfKChazmrgI89G7YHicDEiTBwII8zhtjZw5k6xTKMMabk81qCEZFwnLv9h6tqsqouxUkUd7up3gcY5xqieRcwDugLoKqrVPVtVT2kqmnAy0BDEbnIKxviCSIwaRKZ/frzFKP5Y+AzzJwJzz8PSUm+Ds4YYwpH1EvHY0TkcmCZqpbNUfYocKWq3pSn7lHgWlVd6XreEliiqn86OyEitwCvq2r1s6x3AE6LiKpVq8bNmTOnSNuRnJxMuXLlirSMs8rMpM7ol6jz5UJG8AyjA4YTHJzJuHE/0rjxMe/GUgj+FI/F4p4/xQL+FY/F4t5VV131naq2LNSLVdUrE9AB2JOn7D4g0U3dDKBRjucxOGPOSJ56NYBdwB35iSEuLk6LasmSJUVexjmlp+vS+veogg7lOQ0MVH3uOR/FUkD+FI/F4p4/xaLqX/FYLO4Bq7WQ+31vXkWWzJ9vyIwAjuejbgSQ7NpYAETkYuBz4DVVnV3MsfpOYCABU6cw+8p0ns98gvSMIEJCHvN1VMYYU2DePMm/CQgSkZgcZc2AdW7qrnPNc1tPRCrhJJf5qjraA7H6VEL7QOokvsOahrfzL/7Brkdf5umnsdEwjTElitcSjKqeAD4AnhWRcBFpB3QDZripPh14RESiRSQK+DswDUBEIoDPcM7nDPVK8D6Q0CGI5mvfJaN7T17iEQ49O5Ebb4RDh3wdmTHG5I+3L1MeBIQB+4DZwF9VdZ2IdBCR5Bz13gQWAD8Da4GFrjKA7kAr4C8ikpxjquW1rfCWoCAC585Cu3dnIg8R88VrxMXB99/7OjBjjDk/r97Jr6qHcO5vyVv+DVAux3MF/uGa8tZ9B3jHg2H6l+BgZM4cuO02Jsx/gLJHg2jbdgCvvQZ16/o6OGOMOTvrrr8kCAmB//wHunblhcP3M7ru2/TrB2PHNuD0aV8HZ4wx7lmCKSlCQ+G99+D663nkl/uYd+M0Fi6Mon172L7d18EZY8yfWYIpScqUgQ8+QDp3pud//8K6JtdRcUMSLVrAZ5/5OjhjjMnNEkxJExYGw4ZBQACxaz/ni5Qr6B6xiBtugFGjIDPT1wEaY4zDEkxJtGKFMyomIBnpvHWoJ2OvmM+IEXDzzXD4sK8DNMYYSzAlU8eOEBJCZkAAhIYSUPkiHvmqG5ub9WDtZ7to2RLWrPF1kMaY0s4STEnkGhVz2733OiNj/vILPPcc9TZ+wuaQWHodnES7NhmMGGE9MhtjfMcSTEmVkMCOu+5ykk1wsHNeZu1agtrGM/roYFYEtuOjUT/x5JNw9dWWZIwx3mcJ5kJSrx58/jnMmEFdtvAdcTynQ5HTJ3n0UfjjD18HaIwpTSzBXGhEoHdv1r//C7MD72YoY/iZyyif9Dl168Lf/ga7dvk6SGNMaWAJ5gLV6vqLiPlmCjP7LyGqVhD/0+v4Mro3/3l1H/XqweDB8Pvvvo7SGHMhswRzAUtIgLv+3ZGwjT/CiBEk7PgPOyNieaP1FN58Q6lfH/76V9ixw9eRGmMuRJZgSoMyZeCZZ+DHHwm8rDF9v+nH8ZZXMbT7Rt5+G+rXh/vvh23bfB2oMeZCYgmmNImNhcREeOstymz8kWc+bMrBW/vzfvNRbJiSREwM9O8Pv/3m60CNMRcCSzClTUAA3HcfbNgAV1xB+blvc9O3I/iKK5h43QLefRcaNIB774XNm30drDGmJLMEU1pVq+bcIBPgfAQkPZ2Bn97C4at7MOGmL5gzK5NGjaBPH5g7127YNMYUnFcHHDN+pmNHZxiA1FTnZs1bbyXs888ZdOADBtSpx6c1BjBw9l+YPv1iwKkyfz5cf71vwzbGlAzWginNXF3OMGoUfPklzJwJO3fCrFkE1YrmpqWPsz0jmlncwRV8RVqa0qULdOoEkybZ/TTGmHOzBFPaJSQ43cwkJDjPQ0Phjjvgq69g/Xr29xzE9fyPr+jIBrmUGXHjOfH7IQYPhho1oE0bePFFO19jjPkzSzDm7GJjqT53PJuW7Oa/PacR3bgSd61+mBW/R3O4Wx+m3Z9Eepry+OMQEwP9+rVk5Ej46SdQ9XXwxhhfswRjziu+Yxg3zutD+Z+XO+MA/OUvVPzyQ/q82ZbVac048OxrvDfwCx46+SKfP5NEs2ZOwvnHP5yha2wQNGNKJ0swpmCaNYPXXoPdu+GttyA4mItGPECPN67loT2jWBZ8JYv6zaZ+PeXll50jbzVrQs+e0K+fc8rHGFM6WIIxhVOunHM/zXffwaBBZ0bYTEuj09t38r+foznR4x6WDXiHtrV28v77MGUKdO7sdPp8773w+uvOy1NTfb0xxhhPsMuUTdH17g1Tp5KZkkJASAgMGQJbtxLy5f9ou38GbYFfaMhiOrGYzvwuHVmwoBJTpzovDwmB5s2hVStnat0aGjbMvkXHGFNCWYIxRZc1wuaUKdS9994zV6RlZsLatWybvIhtkxbTJ/MdHuA1dGsAxMVx9LZOrLmoM58db0vSmjDeece5/BmgfHmIizuTcFq1glq1nHM6iYnOLTxZqzHG+CdLMKZ4JCSwIyWFujn3+gEB0LQpdSY05Y87HmHSolS6XryKJnsWweLFVPz3WDqmv0DH0FBo147MOxtw5IiyuuatfHzqWr79Fl555cwhtIoV4dgx5wq1oCD417+gSxcn8YSG+mazjTFnZwnGeEVCAiQkhADtnWnkSDh+HL75BhYtgvnzCfjySyKBa3mTaytVgiZNyLirIbvLN+Sn1IZM/rohC47UJZMg0tKcI3FDhjhjrEVFQZ06Z6aUlOqkpzuPa9b8cwJKSrKWkDGeZgnG+E758k4TpEsXuPhiGD4cMjKcjFGvHqgS+N+Pqbl/PzWBrkAaQWyhHr8GNKTG1Q05Vashv2hDfjjViLV7KrNsGWybnUSHzESGj+3IChL+lICCg51OCzIynMeTJzuJpmJFCA93Vm+MKTpLMMY/dOzonO1PTXX+Tphwpmlx6BBs3AgbN7Lvy43IdxvpdGojZb/+H6Sm0jZrGZGREBWFygYgEw0KZtXt41gVeT0/H67Br7+XYelSZ4C1rBtBU1Lg7rvPhBEUBJUqOcmmUqVzP9692wkrIQHi451WUpkyZ/6GhOQvWRVXa6o4lmOxeHY5/hRLcS7nbCzBGP+Q1S+au097ZGTWMTai++Z4TUaGM0qaK/mwcSN8/jmSkQGApKfSZuaDtMmqX6UK1KrFgdq1mLOsJtsya7E7sCbX9KtFcN2a7M6sxuGjARw+DEeOQLWtScSsTeQr6ch7pxM4fNhZZV6vvXb2zQoNhaCg9pQtmzv5ZP09fRp++MG5HiIwEK64wmnMBQY6p7Dy+/ePP5xerzMynLK773bOTQUEOJOI83fr1lqsWpW7LOvv9u0wcSKkpzuJ9sEHnRZfZqaTkPM7bdsGU6c6sQQFOZek167trCfv9NtvNfjhhz+Xb9uWO5aHHoJLLsn93ubtLSLn86zHW7c6F45kLWfgQCcWd3Fv2VKL5ctzl2Vt+44dMGPGmfe3b98z2+TuvXT3d9s253dTViyDBzvLyMhw1pOZeebx5s21SUzMXZb1eOdOeP/9M7HceqvTbVPO9y9rned6/vvvMG2as9zQUOfrV9xJRrQU9enRsmVLXb16dZGWkZiYSMeOHYsnoCLyp1jAT+JJSoJOnc5cMv3iixAR4ewhduxwvlU7dpCxbQeBp07kfm1wsPNNrVkTwsKcb1zWXvLhh9Eml3E6oCzJmWWZ/XFZ3v2gLMlaltNSlqtvLEuH68pyIjOM02mBnD7ttI6qbEmi4pqP2RXTjQ0VE0hJIXve6dOwZYuzY89SpYrTOsq5Y8nIgOankmhzOpFlwR1ZGZDwp/mpqe6TX05tSKIjiSTiHDosLH9aTnHF4k9ybtNKScj1QyIgwElQOe8dCwlxprw/BFqlJ3GFJvIVHUki4Zw9agQGOn3eDhv253ki8p2qtizMtlgLxlxYznbJdB6Bqk4zxZVwsv9mPV650vkmA6SlwYsvIkCYa3rINQGgwALXBM7PwbJlnW/twYOoKrL+RWdE0chIJ5EFB0NYMIdqB7NkZzApmcFkBARzbXwwVWsEn6kTHAx79575+RwUBAMGQN26Z/Y4gYH8ti2Al14JJDU9AAkK5LHHA6jXIBCVADQgEP11M4HPPetsS3AwqcNGklGvAaqKZjh7pF83KS+/pGSkK8FBysNDlLqXKIIzgRK45VdCJ/wL0tMgKJi0h/+B1o9xDgUGCAEBwuYtwpgxkJYuBAYJjw8V6tcHJGtJgvy6iZAxrniCgjn19yfIrFMfzcyEjEy2bsnktVcz0YxMggMzuX+AUqdWJmgm4vo5H7D9N8KmvQEZ6RAYxKl7B6F166MBgc57HxTI1u2BjJ8YSEp6IBIUyKOPBxLTKBCCg5BAp4zAQAJ+/YV9X3xG1etvgCaXIQGSa1q7Thj8oJCaJgQFCxMmBXDZZWe2J1Nd2/XTjwR8u4L02KZk1otBTzm/JvR0Cr/9ksLkiacJykihbGAKfe9IoWaVFAJSTyNpKUhqCgG7fidg0efZzRO57jqIjj7zWQgJYefeYN6ZFcypjBAyA4O576/BXBLjzMuut3WrkzGymksvvABNmkCA6/MgAfy8PpCHHgkkNS2AgKBAulQPgJ/yNI1/+oloqFbYr6O1YArIL36lu/hTLOBf8RQ5FldLKPuc0Jw5ToI4eRJOnYKTJ9nw/Ul++e4kl9U7Sf2ok868nFNSEuT8vNWv77SO0tJyTSePpZFyPI2ywWmEBqT9aT5paUV+P4yfEjlzzDQ01GnWHj16Zn6FCk5rOudnIT/N1WLUElitWqhLX7zaghGRSOBt4FrgADBMVWe5qSfAC0B/V9FkYKi6sqGIvAVcCcQA96rqNM9Hb0qVc50Tcom9GmLPtYych+tCQ2H6dLfLKeuazmr5cqePnaxkt2CBc+dpzmNk5/qbmen0ydO/P5qWhgQHO/3INW/u/sTIuaYffnB6bnC1hJgxA1q0yH1sBs7//Icf4L770NRUJCTEOWkTF5f7xMXZpqz5q1dDt25n3pcPPnBiycgo2PTOO86lhJmZznL79oVevc5/sinvMan333d+iGQtp18/Z8pKHjlPwGVNQUG5rwTJ+5n59FP3rfDMzDPHyvImn7Q0+PZbZ91ZLZgJE6Bx49yfjfN9bj74AN57r2i91aqq1yZgNjAXKIdzQ8RRoLGbevcDG4EaQDSwHhiYY/4DQCdgNdA3v+uPi4vTolqyZEmRl1Fc/CkWVf+Kx29iWb5ct/Tvr7p8eZGXo889V7Tl+FMsxRVPMb0vGhamGQEBqmFhhV+WazkaGFjk5fjF/8m1PS0gUwu7zy/sCwu8IggHUoEGOcpmAC+4qbscGJDjeT9ghZt6Sy3B+A9/isdicc+fYlH1o3j8Zafu4k/vSzTs1ELu9712DkZELgeWqWrZHGWPAleq6k156h4FrlXVla7nLYElqlo+T72lwGQ9xyEyERkADACoWrVq3Jw5c4q0HcnJyZQrV65Iyygu/hQL+Fc8Fot7/hQL+Fc8Fot7V111VaGvIvNmC6YDsCdP2X1Aopu6GUCjHM9jcK7VkTz1rAXjR/wpHovFPX+KRdW/4rFY3ANWayH3+97sED0ZiMhTFgEcz0fdCCDZtbHGGGNKAG8mmE1AkIjE5ChrBqxzU3eda9756hljjPFTXkswqnoC+AB4VkTCRaQd0A3nRH9e04FHRCRaRKKAvwPTsmaKSIiIlAEECBaRMiJiw1MZY4wf8fZOeRDOjdD7cC5Z/quqrhORDiKSnKPemzj3Rf8MrAUWusqyfA6cAtoCb7keX+H58I0xxuSXV2+0VNVDwC1uyr/BuTcm67kC/3BN7pbT0UMhGmOMKSZ2WMkYY4xHWIIxxhjjEZZgjDHGeIQlGGOMMR5hCcYYY4xHWIIxxhjjEZZgjDHGeIQlGGOMMR5hCcYYY4xHWIIxxhjjEZZgjDHGeIQlGGOMMR5hCcYYY4xHWIIxxhjjEZZgjDHGeIQlGGOMMR5hCcYYY4xHWIIxxhjjEZZgjDHGeIQlGGOMMR5hCcYYY4xHWIIxxhjjEZZgjDHGeIQlGGOMMR5hCcYYY4xHWIIxxhjjEZZgjDHGeIQlGGOMMR5hCcYYY4xHWIIxxhjjEZZgjDHGeIQlGGOMMR5hCcYYY4xHWIIxxhjjEV5NMCISKSIfisgJEdkuIneepZ6IyBgROeiaxoiI5JjfXES+E5GTrr/NvbcVxhhj8sPbLZhJQCpQFbgLeF1EGrupNwC4BWgGNAVuAu4HEJEQ4GPgXaAS8A7wsavcGGOMn/BaghGRcKAHMFxVk1V1KTAfuNtN9T7AOFXdqaq7gHFAX9e8jkAQMF5VU1R1AiDA1R7eBGOMMQUQ5MV1NQDSVXVTjrIfgSvd1G3smpezXuMc835SVc0x/ydX+f/yLkhEBuC0iACSRWRj4cLPVhk4UMRlFBd/igX8Kx6LxT1/igX8Kx6Lxb2GhX2hNxNMOeBYnrKjQPmz1D2ap14513mYvPPOtRxU9S3grcIE7I6IrFbVlsW1vKLwp1jAv+KxWNzzp1jAv+KxWNwTkdWFfa03z8EkAxF5yiKA4/moGwEku1otBVmOMcYYH/FmgtkEBIlITI6yZsA6N3XXuea5q7cOaJrzqjKcCwHcLccYY4yPeC3BqOoJ4APgWREJF5F2QDdghpvq04FHRCRaRKKAvwPTXPMSgQzgIREJFZHBrvIvPRl/DsV2uK0Y+FMs4F/xWCzu+VMs4F/xWCzuFToWyX2u3LNEJBKYAlwDHASGquosEekAfKqq5Vz1BBgD9He9dDLweNaJfRG53FV2KbAB6KeqP3htQ4wxxpyXVxOMMcaY0sO6ijHGGOMRlmCMMcZ4hCWYfHBdTPC2q/+04yKyRkRu8IO4YkTktIi86wex9BKRDa5+5ra4zqv5Io46IvKJiBwWkT0i8qqIeOV+LxEZLCKrRSRFRKblmddJRH5x9Z+3RERq+yIWEWkjIl+IyCER2S8i80Skui9iyVNnhIioiHT2ZCzni0dEyorIayJyQESOisjXPozl/1zfqeMisl5EbvFwLOfczxXmM2wJJn+CgN9xeh2oADwF/EdE6vgwJnD6dvvWxzEgItfgXJTxF5wbXq8AfvNROK8B+4DqQHOc/9kgL617N/BPnAtZsolIZZwrKIcDkcBqYK4vYsHpv+8toA5QG+f+sak+igUAEakH3Ab84eE48hPPWzj/o1jX34d9EYuIROP0t/gIzn1+jwGzRKSKB2M5636usJ9hb97JX2K5LrEemaPovyKyFYgDtvkiJhHpBRwBlgP1fRFDDs8Az6rqCtfzXT6M5RLgVVU9DewRkf9xppshj1LVDwBEpCVQI8esW4F1qjrPNX8kcEBEGqnqL96MRVU/zVlPRF4FvvJEDOeLJYdJwOM4Pw487mzxiEgj4Gaghqpm9TrynS9icT0+kuP/tVBETgD1cH5AeSKWc+3nLqIQn2FrwRSCiFTF6VvNJzd3ikgE8CzOrxufEpFAoCVwsYhsFpGdrsNSYT4KaTzQy3WoIxq4ATd91HlZrr71XF/kLXgp8Z3HFfjwJmURuQ1IUdVPfBVDDq2B7cAzrkNkP4tIDx/FshrYICI3i0ig6/BYCk6/i16RZz9XqM+wJZgCEpFgYCbwjqd+febDKOBtVd3po/XnVBUIBnoCHXAOS12O07z2ha9xPvTHgJ04X9SPfBRLlgL1n+ctItIUGIFz+MUX6y8PPAf8zRfrd6MG0ATnfxMFDAbeEZFYbweiqhk4N5zPwkkss4D7XTt2j3OznyvUZ9gSTAGISABOzwOpOB8+X8TQHOgMvOyL9btxyvV3oqr+oaoHgJeALt4OxPX/+R/OseJwnB5pK+GcH/Ilv+s/T0TqA58Cf1PVb3wUxkhghqpu89H68zoFpAH/VNVUVf0KWAJc6+1AXBc7vIgzPEkIznmRyeKFwRXPsp8r1GfYEkw+iYgAb+P8Yu+hqmk+CqUjzgnaHSKyB3gU6CEi3/siGFU9jNNSyHnHrq/u3o0EauGcg0lR1YM4J7C9nuzyyNW3njhjI9XDd4dYawOLgFGq6q6rJm/phNPl0x7XZ7kmzknlx30Uj7vDT776LDcHvlbV1aqaqarfAitxflx6zDn2c4X6DFuCyb/Xca4suUlVT52vsge9hfOPbe6a3gAWAtf5MKapwIMiUkVEKuFcefNfbwfhaj1tBf4qIkEiUhFn8DqvHLd2rbMMEAgEikgZcS6R/hBoIiI9XPNH4Ixp5LFDrGeLxXVe6kucJPyGp9afn1hwEkwTznyWd+OMXDvJR/F8DewAhrnqtAOuAj7zQSzfAh2yWizidI/VAc9/ls+2nyvcZ1hVbTrPhHM5pwKncZqKWdNdfhDbSOBdH8cQjHMF0BFgDzABKOOjWJrjdIh6GGfApv8AVb34v9A800jXvM7ALziHYRKBOr6IBXja9Tjn5zjZV+9LnnrbgM4+/j81BpKAE8B6oLsPYxkMbMY5DPUb8HcPx3LO/VxhPsPWF5kxxhiPsENkxhhjPMISjDHGGI+wBGOMMcYjLMEYY4zxCEswxhhjPMISjDHGGI+wBGNMCSHOeCk9fR2HMfllCcaYfBCRaa4dfN5pxflfbUzpZOPBGJN/i4C785Sl+iIQY0oCa8EYk38pqronz3QIsg9fDRaRha4hZbeLSO+cLxaRy0RkkYicEmfI4mkiUiFPnT6ucUhSRGSviLyTJ4ZIcYY5PiEiv7lZxwjXulNcnUhO98g7YUw+WIIxpvg8A8zH6Q/tLWC6a6TCrN5nP8Pp26k10B1oS46hckXkfuBNnM5Dm+L0Ar02zzpGAB/j9Gw7F5giIrVcr++B07v2ICAGuBFY5YHtNCZfrC8yY/JBRKYBvXE6Asxpkqo+LiIKTFbV+3K8ZhGwR1V7i8h9wFic4XiPu+Z3xBlvJEZVN4vITpyOS4eeJQYFXlDVYa7nQTgDqw1Q1XdF5BGc3oibqO+GkzAmm52DMSb/vgYG5Ck7kuNxUp55SUBX1+NYnO7Ncw7QtBzIBC4VkWNANLD4PDFkd9euqukish+o4iqahzM65FYR+Qxn8LX5qppynmUa4xF2iMyY/DupqpvzTAeKYbkFOYyQt2WiuL7Hqvo70BCnFXMMGAd85zo8Z4zXWYIxpvi0cfN8g+vxBuAy1zj0WdrifAc3qOo+YBfOIFyFpqqnVXWhqj4MtMIZ36RdUZZpTGHZITJj8i9URKrlKctQ1f2ux7eKyLc4gzH1xEkW8a55M3EuApguIiOASjgn9D9Q1c2uOqOBl0VkL84opWWBTqo6Lj/BiUhfnO/0SpyLCW7HafH8WsDtNKZYWIIxJv86A3/kKdsF1HA9Hgn0wBnRcz/wF3XGUkdVT4rIdcB4nCu7TuNcDfa3rAWp6usikgr8HRgDHAI+KUB8R4DHcS4mCMYZkfFWVd1agGUYU2zsKjJjioHrCq/bVPU9X8dijL+wczDGGGM8whKMMcYYj7BDZMYYYzzCWjDGGGM8whKMMcYYj7AEY4wxxiMswRhjjPEISzDGGGM84v8BV2EZptXkwf8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = model.predict(X_valid)\n",
    "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Deep RNNs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 10s 1ms/sample - loss: 0.0502 - val_loss: 0.0093\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0069 - val_loss: 0.0055\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0050 - val_loss: 0.0044\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0048 - val_loss: 0.0040\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0041 - val_loss: 0.0037\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0041 - val_loss: 0.0043\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0038 - val_loss: 0.0036\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 7s 1ms/sample - loss: 0.0037 - val_loss: 0.0032\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 7s 1ms/sample - loss: 0.0036 - val_loss: 0.0036\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0035 - val_loss: 0.0031\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0034 - val_loss: 0.0032\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0034 - val_loss: 0.0036\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0033 - val_loss: 0.0031\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0033 - val_loss: 0.0030\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0033 - val_loss: 0.0031\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 7s 1ms/sample - loss: 0.0033 - val_loss: 0.0029\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0032 - val_loss: 0.0029\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0032 - val_loss: 0.0029\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 7s 1ms/sample - loss: 0.0032 - val_loss: 0.0027\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0031 - val_loss: 0.0029\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True),\n",
    "    keras.layers.SimpleRNN(1)\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\")\n",
    "history = model.fit(X_train, y_train, epochs=20,\n",
    "                    validation_data=(X_valid, y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2000/2000 [==============================] - 1s 283us/sample - loss: 0.0029\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.002889613388106227"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAESCAYAAADAEMPrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4FFXW+PHvyR4Swk5Cguw7yo6AgKDgvqA/cPRVZmAU0PFVB3dw3HldmBccXgRHHUQEFRzGDQcdVAQFCSgoqICgqChh30kga5/fH9UJndBAJ+nqbsj5PE896b51u+p0p1Mn91bVvaKqGGOMMcEWFe4AjDHGnJ4swRhjjHGFJRhjjDGusARjjDHGFZZgjDHGuMISjDHGGFdYgjHGGOOKkCYYEaktIm+LSI6IbBaR649TT0RkvIjs8S7jRUR81qt3G9neZVro3oUxxphAxIR4f1OBfCAV6ATMF5E1qrq2TL1RwFVAR0CBj4Cfged96nRU1R/dD9kYY0xFhKwFIyJJwGDgIVXNVtWlwDzg936qDwMmquoWVc0CJgLDQxWrMcaYygtlC6YVUKiqG33K1gD9/NRt713nW699mTqfiUgUsAy4S1V/8bdTERmF0yIiMTGx6xlnnFGx6L08Hg9RUZFx6iqSYoHIisdi8S+SYoHIisdi8W/jxo27VbVehV6sqiFZgL7A9jJlI4HFfuoWAW18nrfE6SoT7/NzgTigJjAF+A6IOVkMXbt21cpatGhRpbcRLJEUi2pkxWOx+BdJsahGVjwWi3/ASq3gcT+UKTIbSClTlgIcCqBuCpDtfbOo6meqmq+q+4E/A02BtsEP2RhjTEWFMsFsBGJEpKVPWUeg7Al+vGUdA6hXTAE5wXpjjDEhFrIEo6o5wFvA4yKSJCK9gUHALD/VZwJ3iUiGiKQDdwMzAESkvYh0EpFoEUnGuQAgC1gfivdhjDEmMKE+i3QrkAjsBGYDf1LVtSLSV0Syfeq9ALwHfItzfmW+twycS5zfAA4CPwFNgMtVtSAk78AYY0xAQnofjKruxbm/pWz5EiDZ57kC93mXsnU/AVq7GKYxxpggCPWNlsaYCvB4PGzZsoWcnJxKbadGjRqsXx85vcmRFE9VjSUpKYmGDRu6clm0JRhjTgG7d+9GRGjdunWlDgSHDh2ievXqQYysciIpnqoYi8fjISsri927d1O/fv2gbz8y7uQxxpzQ/v37SU1NjZib78zpISoqitTUVA4cOODO9l3ZqjEmqIqKioiNjQ13GOY0FBsbS2FhoSvbtgRjzCnCZ0BxY4LGze+VJRhjjDGusARjjDHGFZZgjDGnnOuuu44hQ4aU6zU9e/bknnvucSmio8aMGUO3bt1c38+pwC5TNsYE3cn69YcNG8aMGTMqvP0XXniheKT1gL3//vt2oUSIWYIxxgTdtm3bSh7/+9//ZuTIkaXKEhMT/b6uoKAgoCRQo0aNcsdUu3btcr/GVI51kRlThaxYEcVTT0Fmprv7SUtLK1lq1qx5TFmNGjX4/vvvSUlJYe7cufTr14+EhAReeeUVduzYwbXXXktGRgbVqlXjzDPP5LXXXiu1/bJdZD179uTOO+/k3nvvpXbt2qSlpTF27NhSrZyyXWRpaWmMHz+eG2+8kerVq9O2bVsmT55caj/r1q2jd+/eJCQk0K5dOz766CNiYmKYM2dOwJ9FUVERDz/8MA0bNiQ+Pp5OnTrx/vvvl6xXVR566CEaNWpEfHw86enp3HbbbSXrFy5cyNlnn01SUhI1a9akZ8+ebNiwIeD9h5O1YIw5BY0eDatXl+81Bw7AN99Uw+OBqCjo0AHK0xDo1AkmTSrfPgMxZswYJk6cSMeOHYmPj+fIkSP07NmTsWPHkpKSwgcffMCwYcNo3Lgxffr0Oe52pk+fzr333suKFSv44osv+MMf/sDZZ5/N1VdffdzXTJgwgXHjxvHAAw/wxhtv8Oc//5k+ffrQpUsXCgsLGTRoEM2bN+eLL77g4MGD3HnnnXg8nnK9v7/+9a9MnjyZF154gU6dOjF9+nQGDRrEN998Q9u2bXn99deZOnUqs2fPpm3btuzYsYOlS5cCkJeXx1VXXcXtt9/OnDlzyMvLY+XKlafMDbeWYIypIg4cgOJjo8fjPK9AT1PQ3XXXXVx1VekxcO+8886Sx//93//NRx99xJw5c06YYLp06cKDDz4IQMuWLXn++edZuHDhCRPM5Zdfzi233ALAHXfcwfPPP88nn3xCly5dmD9/Pps3b+bzzz8vGUZl/PjxDBgwoFzvb8KECTzwwANce+21Jdv49NNPmThxItOmTWPz5s1kZGQwcOBAoqOjadSoEW3atAFgz549ZGdnM2jQIJo1awZA27anztyKlmCMOQVVpCWRmQkDBkB+PsTFwWuvQa9ewY+tvMpecVVYWMgTTzzBv/71L7KyssjPzycvL49LLrnkhNvp0KFDqefp6ens3Lmzwq/5/vvvadKkSakxunr06HHS9+Nr586d7N27l969e5cq79OnD8uWLQOc7r6pU6fStGlTLrroIi6++GLOO++8kniuu+46+vfvz8CBAxkwYADXXHMNGRkZ5YojXE6NdpYxptJ69YJ58w4zbhwsXBgZyQWc0Xx9PfHEE0ydOpWxY8eyaNEiVq9ezaWXXkp+fv4Jt1P24gAROWl3VkVeEyzFV9o1a9aMH3/8kSlTplCtWjXuuOMOzj//fHJzcwGYPXs2n3/+Oeeccw5vvvkmLVu2ZNGiRSGJsbIswRhThfTo4WHs2MhJLv4sXbqUq6++muuvv56OHTvSrFkzNm7cGPI42rRpw+bNm9m1a1dJ2RdffFGubdSvX586derw+eeflypfunQp7dq1K3memJjIlVdeyf/93/+xbNky1qxZU2pfXbp0YezYsSxZsoQePXowa5a/iYAjj3WRGWMiSqtWrZg/fz6ZmZnUrFmTZ555hq1bt9K4ceOQxnHZZZfRqFEjhg0bxtNPP82hQ4cYM2YMIlKu8bvuuecennzySZo2bUrHjh2ZPn06q1at4uWXXwbgH//4BzExMXTv3p2kpCRmzZpFXFwczZs3Z8OGDcycOZPLL7+c9PR0fvjhB9atW8dll13m1tsOKkswxpiI8thjj/Hbb79xwQUXkJSUxIgRIxgyZAhZWVkhjSMmJoZ3332XESNG0L17d5o1a8aECRO44oorSEhICHg79957L4cPH2b06NHs2rWLtm3b8s4775ScrK9ZsyYTJkxg9OjRFBUV0b59e2bPnk1GRgZZWVmsXbuWl19+mT179tCgQQNGjBhR6iKIiKaqVWbp2rWrVtaiRYsqvY1giaRYVCMrntMtlnXr1lU+EFU9ePBgULYTLJEUTyCxLF++XAH97rvvwh5LMJ3o+wWs1Aoec60FY4wxxzF37lxq1apFixYt2LRpE6NHj+bss8+mffv24Q7tlGAJxhhjjuPAgQOMHTuWLVu2UKdOHQYMGMAzzzwT7rBOGZZgjDHmOEaMGMGIESPCHcYpyy5TNsYY4wpLMMYYY1xhCcYYY4wrLMEYY4xxhSUYY4wxrrAEY4wxxhWWYIwxEW3atGkls2L6e+7P008/TYsWLYK+b7c8+OCDdOrUyfX9hJolGGNM0F155ZXHnZhr/fr1iAgffvhhhbZ9ww03BH105cLCQlJSUnjnnXdc31dVYgnGGBN0N910E4sWLeKXX345Zt1LL71E48aNGThwYIW2nZiYWGoSMDeFcl+nI0swxlQhUStWwFNPOdNbuuiyyy4jNTW1ZEj6YgUFBcyaNYsbb7yxZF75e+65h1atWpGYmEjTpk0ZM2YMeXl5x922v26rp556itTUVKpXr87w4cM5fPhwqfUrVqzgggsuoG7duqSkpNC3b99S8600adIEgKuvvhoRKele87ev5557jubNmxMXF0fLli2ZPn16ybrCwkJEhGnTpjF48GCSkpJo3rw5s2fPDvCTc3g8Hh577DEaNmxIfHw8HTp04L333itZr6o8+uijNG7cmPj4eBo0aMAf//jHkvWLFy+mR48eJCUlUaNGDXr06MH69evLFUMw2FAxxpyKRo+G1avL95oDB6j2zTfg8UBUFHToADVqBP76Tp0Cnqs5JiaGYcOGMWPGDB555JGSZPLee++xe/fuUgfDlJQUZsyYQXp6OmvXruXmm28mMTGRRx55JKB9vf766zz66KNMmTKFfv36MWfOHCZMmFCq5XHo0CGGDRvG5MmTAXj22We55JJL+PHHH6lVqxZffvkl6enpvPzyy1x88cXExPg/NM6dO5fRo0czadIkBg4cyPvvv8+oUaNo0KBBqSmdH3vsMcaPH8/48eN54YUXGD58OH379qVhw4YBvadnn32WZ555hhdeeIHOnTszc+ZMrr76alavXs2ZZ57JP//5TyZNmsTs2bNp3749O3bs4MsvvwScJD5o0CBuueUWXn/9dQoKCli5cmXJ7yCUrAVjTFVx4ICTXMD5eeCAq7u76aab+PXXX/n4449Lyl566SUuvPBCzjjjjJKyhx9+mHPOOYcmTZpw2WWXMWbMmHL9xz9p0iRuvPFGRo4cSatWrXj44Yfp0qVLqToDBw5k6NChtG3blrZt2zJ16lSioqJYsGABAPXq1QOcuVnS0tKoW7eu331NmDCB4cOHc+utt9KqVStGjx7Nddddx/jx40vVGz58ONdffz0tWrTgiSeeAJxZLAM1efJk7r//fq677jpat27NE088QY8ePZgwYQIAmzdvJj09nQsuuIBGjRrRvXt3br31VgD27dvHwYMHufLKK2nevDlt2rRh6NChtG7dOuD9B0tIWzAiUht4CbgQ2A2MVdXX/dQT4GmgeJS5acAY79wEvvX+ALwCjFTVaW7GbkxECbAlUUpmJgwYAPn5EBcHr73m6tzJLVu2pF+/fkyfPp0LL7yQrVu3smDBAubMmVOq3htvvMHkyZPZtGkT2dnZFBYWluu/7fXr13PbbbeVKuvVqxdz584teb5jxw4eeughFi9ezI4dOygqKuLw4cP8+uuv5XpP69evLzmQF+vTpw8PP/xwqbIOHTqUPI6Li6Nu3brs3LkzoH3s3buXXbt20bt371Llffv25ZNPPgHg2muv5dlnn6Vp06ZcdNFFXHzxxVx55ZXExcVRv359hg4dysCBAxkwYAADBgzgmmuuCbj1FEyhbsFMBfKBVOAG4O8i4m9ihVHAVUBHoANwBXCzbwURqQU8AKx1M2BjThu9enF43jwYNw4WLnQ1uRS76aabeOedd9i7dy8zZsygdu3aDBo0qGR9ZmYmN9xwA5deeinvvfceX3/9NY8//jj5+flBjWPo0KF8/fXXTJo0iWXLlrF69WrS09ODtp+yUyjHxsYes95T3HoMwn4aN27Mxo0bee6550hOTubOO++ke/fuJeeeZs2aRWZmJn369OHtt9+mVatWpVqSoRKyBCMiScBg4CFVzVbVpcA84Pd+qg8DJqrqFlXNAiYCw8vUeQqYjNMSMsYEwNOjB4wdG5LkAjBkyBASEhJ49dVXmT59On/4wx9KHXyXL19O48aN+ctf/kL37t1p2bKl3yvPTqRt27YsX768VFnZ50uXLuWOO+7g0ksvpX379iQlJbF9+/aS9dHR0URHR1NUVHTSfX3++efHbLtdu3blivlEateuTb169U66n8TERK644gomTZrE8uXL+eabb0q9706dOjFmzBg+++wzevfuzcyZM4MWY6BC2UXWCihUVd+LytcA/fzUbe9d51uvpKUjImcD3YBbgd+daKciMgqnRURqaiqLFy+uSOwlsrOzK72NYImkWCCy4jndYqlRowaHDh2qdCxFRUVB2U55DBkyhEceeYT9+/dz3XXXldp/s2bN+PXXX5k+fTpdu3blo48+4o033gAoqZebm3vC56NGjeK2226jffv29OrVi7fffptVq1ZRt27dkjotWrTg5Zdfpm3bthw6dIiHHnqI+Ph48vLy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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = model.predict(X_valid)\n",
    "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Make the second `SimpleRNN` layer return only the last output:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 7s 988us/sample - loss: 0.0212 - val_loss: 0.0053\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 6s 834us/sample - loss: 0.0041 - val_loss: 0.0034\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 6s 811us/sample - loss: 0.0034 - val_loss: 0.0031\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 5s 776us/sample - loss: 0.0033 - val_loss: 0.0030\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 6s 838us/sample - loss: 0.0031 - val_loss: 0.0030\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 5s 764us/sample - loss: 0.0031 - val_loss: 0.0028\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 6s 830us/sample - loss: 0.0030 - val_loss: 0.0028\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 6s 847us/sample - loss: 0.0030 - val_loss: 0.0028\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 5s 773us/sample - loss: 0.0030 - val_loss: 0.0031\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 6s 834us/sample - loss: 0.0030 - val_loss: 0.0027\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 6s 836us/sample - loss: 0.0029 - val_loss: 0.0027\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 6s 829us/sample - loss: 0.0030 - val_loss: 0.0029\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 6s 790us/sample - loss: 0.0029 - val_loss: 0.0029\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 6s 839us/sample - loss: 0.0029 - val_loss: 0.0030\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 5s 768us/sample - loss: 0.0029 - val_loss: 0.0028\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 5s 759us/sample - loss: 0.0028 - val_loss: 0.0026\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 6s 877us/sample - loss: 0.0028 - val_loss: 0.0026\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 6s 820us/sample - loss: 0.0029 - val_loss: 0.0029\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 6s 788us/sample - loss: 0.0028 - val_loss: 0.0025\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 5s 725us/sample - loss: 0.0028 - val_loss: 0.0027\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
    "    keras.layers.SimpleRNN(20),\n",
    "    keras.layers.Dense(1)\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\")\n",
    "history = model.fit(X_train, y_train, epochs=20,\n",
    "                    validation_data=(X_valid, y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2000/2000 [==============================] - 0s 185us/sample - loss: 0.0027\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.0026770312264561653"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAESCAYAAADAEMPrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8VOXZ//HPlZWQECCiICAoO6KAAgICBQWtSxWttrVKC1XUlsda1wptxe3RSh+wFMWqRUSpgqWtVqv+rEWoIkHEiguiuKKAgOwEyDrX748zCUkcYJLMTAbyfb9e5zUz97nnPteZTM41Z7tvc3dERERiLaW+AxARkUOTEoyIiMSFEoyIiMSFEoyIiMSFEoyIiMSFEoyIiMSFEoyIiMRFQhOMmeWZ2VNmtsvMVpvZxfuoZ2Y2ycw2h6dJZmaV5nu4jYLwNCNxayEiItFIS/DypgPFQEugN/Ccmb3t7iuq1bsCOA/oBTjwEvAZ8EClOr3c/eP4hywiIrWRsD0YM8sGLgBudvcCd18EPAP8KEL10cAUd1/j7muBKcCYRMUqIiJ1l8g9mC5AqbuvqlT2NjA0Qt0e4XmV6/WoVucVM0sBFgPXufvnkRZqZlcQ7BGRlZXV56ijjqpd9GGhUIiUlOQ4dZVMsUByxaNYIkumWCC54lEska1atWqTux9eqze7e0ImYAiwvlrZ5cDCCHXLgG6VXncmOFRm4dffAjKAZsB9wHtA2oFi6NOnj9fVggUL6txGrCRTLO7JFY9iiSyZYnFPrngUS2TAMq/ldj+RKbIAyK1WlgvsjKJuLlAQXlnc/RV3L3b3bcAvgGOA7rEPWUREaiuRCWYVkGZmnSuV9QKqn+AnXNYrinrlHLD9zBcRkQRLWIJx913A34HbzSzbzAYBI4HZEao/BlxnZm3MrDVwPTALwMx6mFlvM0s1sxyCCwDWAisTsR4iIhKdRJ9FGgdkARuBOcDP3H2FmQ0xs4JK9R4EngXeJTi/8ly4DIJLnJ8EdgCfAkcD33H3koSsgYiIRCWh98G4+xaC+1uql78K5FR67cAvw1P1ui8DXeMYpoiIxECib7QUkVoIhUKsWbOGXbt21amdpk2bsnJl8hxNTqZ4Gmos2dnZtG3bNi6XRSvBiBwENm3ahJnRtWvXOm0Idu7cSZMmTWIYWd0kUzwNMZZQKMTatWvZtGkTRxxxRMzbT447eURkv7Zt20bLli2T5uY7OTSkpKTQsmVLtm/fHp/249KqiMRUWVkZ6enp9R2GHILS09MpLS2NS9tKMCIHiUodiovETDy/V0owIiISF0owIiISF0owInLQueiii7jwwgtr9J4BAwZwww03xCmivcaPH0/fvn3jvpyDgS5TFpGYO9Bx/dGjRzNr1qxat//ggw+W97Qeteeff14XSiSYEoyIxNxXX31V8fyf//wnl19+eZWyrKysiO8rKSmJKgk0bdq0xjHl5eXV+D1SNzpEJtKAvP56Cr/9LeTnx3c5rVq1qpiaNWv2jbKmTZvywQcfkJuby7x58xg6dCiNGjXi0UcfZcOGDfzgBz+gTZs2NG7cmOOOO47HH3+8SvvVD5ENGDCAa6+9lhtvvJG8vDxatWrFhAkTquzlVD9E1qpVKyZNmsSll15KkyZN6N69O9OmTauynPfff59BgwbRqFEjjj32WF566SXS0tKYO3du1J9FWVkZEydOpG3btmRmZtK7d2+ef/75ivnuzs0330y7du3IzMykdevWXHXVVRXz58+fz0knnUR2djbNmjVjwIABfPjhh1Evvz5pD0bkIHTNNbB8ec3es307vPNOY0IhSEmBnj2hJjsCvXvD1Kk1W2Y0xo8fz5QpU+jVqxeZmZns2bOHAQMGMGHCBHJzc3nhhRcYPXo07du3Z/DgwftsZ+bMmdx44428/vrrLF26lB//+MecdNJJnH/++ft8z+TJk7njjjv41a9+xZNPPskvfvELBg8ezIknnkhpaSkjR46kY8eOLF26lB07dnDttdcSCoVqtH6/+93vmDZtGg8++CC9e/dm5syZjBw5knfeeYfu3bvzxBNPMH36dObMmUP37t3ZsGEDixYtAqCoqIjzzjuPn//858ydO5eioiKWLVt20NxwqwQj0kBs3w7l28ZQKHhdiyNNMXfddddx3nlV+8C99tprK57/z//8Dy+99BJz587db4I58cQT+c1vfgNA586deeCBB5g/f/5+E8x3vvMdfvrTnwJw9dVX88ADD/Dyyy9z4okn8txzz7F69Wpee+21im5UJk2axPDhw2u0fpMnT+ZXv/oVP/jBDyra+M9//sOUKVOYMWMGq1evpk2bNowYMYLU1FTatWtHt27dANi8eTMFBQWMHDmSDh06ANC9+8EztqISjMhBqDZ7Evn5MHw4FBdDRgY8/jgMHBj72Gqq+hVXpaWl3Hnnnfz1r39l7dq1FBcXU1RUxJlnnrnfdnr27FnldevWrdm4cWOt3/PBBx9w9NFHV+mjq3///gdcn8o2btzIli1bGDRoUJXywYMHs3jxYiA43Dd9+nSOOeYYvv3tb3PGGWdwyimnVMRz0UUXMWzYMEaMGMHw4cP53ve+R5s2bWoUR305OPazRKTOBg6EZ57ZzR13wPz5yZFcIOjNt7I777yT6dOnM2HCBBYsWMDy5cs566yzKC4u3m871S8OMLMDHs6qzXtipfxKuw4dOvDxxx9z33330bhxY66++mpOPfVUCgsLAZgzZw6vvfYaJ598Mn/729/o3LkzCxYsSEiMdaUEI9KA9O8fYsKE5EkukSxatIjzzz+fiy++mF69etGhQwdWrVqV8Di6devG6tWr+frrryvKli5dWqM2jjjiCA477DBee+21KuWLFi3i2GOPrXidlZXFueeeyx/+8AcWL17M22+/XWVZJ554IhMmTODVV1+lf//+zJ4daSDg5KNDZCKSVLp06cJzzz1Hfn4+zZo145577mHdunW0b98+oXGcffbZtGvXjtGjR3P33Xezc+dOxo8fj5nVqP+uG264gbvuuotjjjmGXr16MXPmTN58800eeeQRAP70pz+RlpZGv379yM7OZvbs2WRkZNCxY0c+/PBDHnvsMb7zne/QunVrPvroI95//33OPvvseK12TCnBiEhSue222/jyyy857bTTyM7OZuzYsVx44YWsXbs2oXGkpaXxj3/8g7Fjx9KvXz86dOjA5MmTOeecc2jUqFHU7dx4443s3r2ba665hq+//pru3bvz9NNPV5ysb9asGZMnT+aaa66hrKyMHj16MGfOHNq0acPatWtZsWIFjzzyCJs3b+bII49k7NixVS6CSGru3mCmPn36eF0tWLCgzm3ESjLF4p5c8Rxqsbz//vt1D8Tdd+zYEZN2YiWZ4okmliVLljjg7733Xr3HEkv7+34By7yW21ztwYiI7MO8efNo3rw5nTp14pNPPuGaa67hpJNOokePHvUd2kFBCUZEZB+2b9/OhAkTWLNmDYcddhjDhw/nnnvuqe+wDhpKMCIi+zB27FjGjh1b32EctHSZsoiIxIUSjIiIxIUSjIiIxIUSjIiIxIUSjIiIxIUSjIiIxIUSjIgktRkzZlSMihnpdSR33303nTp1ivmy4+U3v/kNvXv3jvtyEk0JRkRi7txzz93nwFwrV67EzPjXv/5Vq7YvueSSmPeuXFpaSm5uLk8//XTcl9WQKMGISMxddtllLFiwgM8///wb8x5++GHat2/PiBEjatV2VlZWlUHA4imRyzoUKcGINCApr78Ov/1tMLxlHJ199tm0bNmyokv6ciUlJcyePZtLL720Ylz5G264gS5dupCVlcUxxxzD+PHjKSoq2mfbkQ5b/fa3v6Vly5Y0adKEMWPGsHv37irzX3/9dU477TRatGhBbm4uQ4YMqTLeytFHHw3A+eefj5lVHF6LtKz777+fjh07kpGRQefOnZk5c2bFvNLSUsyMGTNmcMEFF5CdnU3Hjh2ZM2dOlJ9cIBQKcdttt9G2bVsyMzPp2bMnzz77bMV8d+fWW2+lffv2ZGZmcuSRR/KTn/ykYv7ChQvp378/2dnZNG3alP79+7Ny5coaxRAL6ipG5GB0zTWwfHnN3rN9O43feQdCIUhJgZ49oWnT6N/fu3fUYzWnpaUxevRoZs2axS233FKRTJ599lk2bdpUZWOYm5vLrFmzaN26NStWrODKK68kKyuLW265JaplPfHEE9x6663cd999DB06lLlz5zJ58uQqex47d+5k9OjRTJs2DYB7772XM888k48//pjmzZvzxhtv0Lp1ax555BHOOOMM0tIibxrnzZvHNddcw9SpUxkxYgTPP/88V1xxBUceeWSVIZ1vu+02Jk2axKRJk3jwwQcZM2YMQ4YMoW3btlGt07333ss999zDgw8+yAknnMBjjz3G+eefz/LlyznuuOP4y1/+wtSpU5kzZw49evRgw4YNvPHGG0CQxEeOHMlPf/pTnnjiCUpKSli2bFnF3yCRtAcj0lBs3x4kFwget2+P6+Iuu+wyvvjiC/79739XlD388MOcfvrpHHXUURVlEydO5OSTT+boo4/m7LPPZvz48TX6xT916lQuvfRSLr/8crp06cLEiRM58cQTq9QZMWIEo0aNonv37nTv3p3p06eTkpLCiy++CMDhhx8OBGOztGrVihYtWkRc1uTJkxkzZgzjxo2jS5cuXHPNNVx00UVMmjSpSr0xY8Zw8cUX06lTJ+68804gGMUyWtOmTeOmm27ioosuomvXrtx5553079+fyZMnA7B69Wpa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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = model.predict(X_valid)\n",
    "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Forecasting Several Steps Ahead"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(43) # not 42, as it would give the first series in the train set\n",
    "\n",
    "series = generate_time_series(1, n_steps + 10)\n",
    "X_new, Y_new = series[:, :n_steps], series[:, n_steps:]\n",
    "X = X_new\n",
    "for step_ahead in range(10):\n",
    "    y_pred_one = model.predict(X[:, step_ahead:])[:, np.newaxis, :]\n",
    "    X = np.concatenate([X, y_pred_one], axis=1)\n",
    "\n",
    "Y_pred = X[:, n_steps:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 10, 1)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_pred.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure forecast_ahead_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_multiple_forecasts(X, Y, Y_pred):\n",
    "    n_steps = X.shape[1]\n",
    "    ahead = Y.shape[1]\n",
    "    plot_series(X[0, :, 0])\n",
    "    plt.plot(np.arange(n_steps, n_steps + ahead), Y_pred[0, :, 0], \"ro-\")\n",
    "    plt.plot(np.arange(n_steps, n_steps + ahead), Y[0, :, 0], \"bx-\", markersize=10)\n",
    "    plt.axis([0, n_steps + ahead, -1, 1])\n",
    "\n",
    "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n",
    "save_fig(\"forecast_ahead_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's create an RNN that predicts all 10 next values at once:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "\n",
    "n_steps = 50\n",
    "series = generate_time_series(10000, n_steps + 10)\n",
    "X_train, Y_train = series[:7000, :n_steps], series[:7000, -10:]\n",
    "X_valid, Y_valid = series[7000:9000, :n_steps], series[7000:9000, -10:]\n",
    "X_test, Y_test = series[9000:, :n_steps], series[9000:, -10:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 7s 966us/sample - loss: 0.0633 - val_loss: 0.0380\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 5s 774us/sample - loss: 0.0331 - val_loss: 0.0279\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 5s 762us/sample - loss: 0.0264 - val_loss: 0.0256\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 5s 775us/sample - loss: 0.0229 - val_loss: 0.0216\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 5s 765us/sample - loss: 0.0219 - val_loss: 0.0213\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 5s 752us/sample - loss: 0.0211 - val_loss: 0.0210\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 5s 735us/sample - loss: 0.0210 - val_loss: 0.0194\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 5s 737us/sample - loss: 0.0204 - val_loss: 0.0197\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 5s 740us/sample - loss: 0.0201 - val_loss: 0.0197\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 5s 739us/sample - loss: 0.0201 - val_loss: 0.0210\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 5s 743us/sample - loss: 0.0192 - val_loss: 0.0184\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 5s 746us/sample - loss: 0.0195 - val_loss: 0.0199\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 5s 742us/sample - loss: 0.0191 - val_loss: 0.0227\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 5s 747us/sample - loss: 0.0190 - val_loss: 0.0182\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 5s 753us/sample - loss: 0.0183 - val_loss: 0.0220\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 5s 739us/sample - loss: 0.0183 - val_loss: 0.0195\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 5s 753us/sample - loss: 0.0185 - val_loss: 0.0181\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 5s 760us/sample - loss: 0.0182 - val_loss: 0.0205\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 5s 763us/sample - loss: 0.0179 - val_loss: 0.0179\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 5s 775us/sample - loss: 0.0181 - val_loss: 0.0177\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True),\n",
    "    keras.layers.TimeDistributed(keras.layers.Dense(1)),\n",
    "    keras.layers.Lambda(lambda Y_pred: Y_pred[:, -10:])\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\")\n",
    "history = model.fit(X_train, Y_train, epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(43)\n",
    "\n",
    "series = generate_time_series(1, 50 + 10)\n",
    "X_new, Y_new = series[:, :50, :], series[:, -10:, :]\n",
    "Y_pred = model.predict(X_new)[:, -10:, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's create an RNN that predicts the input sequence, shifted 10 steps into the future. That is, instead of just forecasting time steps 50 to 59 based on time steps 0 to 49, it will forecast time steps 10 to 59 based on time steps 0 to 49 (the time steps 10 to 49 are in the input, but the model is causal so at any time step it cannot see the future inputs):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "\n",
    "n_steps = 50\n",
    "series = generate_time_series(10000, n_steps + 10)\n",
    "X_train, Y_train = series[:7000, :n_steps], series[:7000, 10:]\n",
    "X_valid, Y_valid = series[7000:9000, :n_steps], series[7000:9000, 10:]\n",
    "X_test, Y_test = series[9000:, :n_steps], series[9000:, 10:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((7000, 50, 1), (7000, 50, 1))"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape, Y_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 7s 1ms/sample - loss: 0.0771 - last_10_time_steps_mse: 0.0677 - val_loss: 0.0576 - val_last_10_time_steps_mse: 0.0460\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 6s 822us/sample - loss: 0.0552 - last_10_time_steps_mse: 0.0428 - val_loss: 0.0521 - val_last_10_time_steps_mse: 0.0385\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 6s 812us/sample - loss: 0.0511 - last_10_time_steps_mse: 0.0367 - val_loss: 0.0516 - val_last_10_time_steps_mse: 0.0371\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 6s 819us/sample - loss: 0.0480 - last_10_time_steps_mse: 0.0332 - val_loss: 0.0461 - val_last_10_time_steps_mse: 0.0308\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 6s 805us/sample - loss: 0.0452 - last_10_time_steps_mse: 0.0300 - val_loss: 0.0437 - val_last_10_time_steps_mse: 0.0279\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 6s 798us/sample - loss: 0.0428 - last_10_time_steps_mse: 0.0273 - val_loss: 0.0416 - val_last_10_time_steps_mse: 0.0247\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 6s 799us/sample - loss: 0.0416 - last_10_time_steps_mse: 0.0256 - val_loss: 0.0403 - val_last_10_time_steps_mse: 0.0237\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 6s 801us/sample - loss: 0.0402 - last_10_time_steps_mse: 0.0242 - val_loss: 0.0404 - val_last_10_time_steps_mse: 0.0249\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 6s 811us/sample - loss: 0.0395 - last_10_time_steps_mse: 0.0234 - val_loss: 0.0386 - val_last_10_time_steps_mse: 0.0222\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 6s 800us/sample - loss: 0.0389 - last_10_time_steps_mse: 0.0228 - val_loss: 0.0390 - val_last_10_time_steps_mse: 0.0230\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 6s 806us/sample - loss: 0.0383 - last_10_time_steps_mse: 0.0223 - val_loss: 0.0392 - val_last_10_time_steps_mse: 0.0234\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 6s 786us/sample - loss: 0.0380 - last_10_time_steps_mse: 0.0218 - val_loss: 0.0373 - val_last_10_time_steps_mse: 0.0206\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 5s 784us/sample - loss: 0.0375 - last_10_time_steps_mse: 0.0214 - val_loss: 0.0373 - val_last_10_time_steps_mse: 0.0216\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 5s 748us/sample - loss: 0.0372 - last_10_time_steps_mse: 0.0211 - val_loss: 0.0365 - val_last_10_time_steps_mse: 0.0208\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 5s 739us/sample - loss: 0.0367 - last_10_time_steps_mse: 0.0206 - val_loss: 0.0362 - val_last_10_time_steps_mse: 0.0197\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 5s 739us/sample - loss: 0.0362 - last_10_time_steps_mse: 0.0198 - val_loss: 0.0358 - val_last_10_time_steps_mse: 0.0192\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 5s 740us/sample - loss: 0.0353 - last_10_time_steps_mse: 0.0186 - val_loss: 0.0345 - val_last_10_time_steps_mse: 0.0179\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 5s 755us/sample - loss: 0.0342 - last_10_time_steps_mse: 0.0168 - val_loss: 0.0338 - val_last_10_time_steps_mse: 0.0165\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 5s 745us/sample - loss: 0.0331 - last_10_time_steps_mse: 0.0152 - val_loss: 0.0320 - val_last_10_time_steps_mse: 0.0141\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 5s 740us/sample - loss: 0.0320 - last_10_time_steps_mse: 0.0138 - val_loss: 0.0313 - val_last_10_time_steps_mse: 0.0133\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True),\n",
    "    keras.layers.TimeDistributed(keras.layers.Dense(1))\n",
    "])\n",
    "\n",
    "def last_10_time_steps_mse(Y_true, Y_pred):\n",
    "    return keras.metrics.mean_squared_error(Y_true[:, -10:], Y_pred[:, -10:])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_10_time_steps_mse])\n",
    "history = model.fit(X_train, Y_train, epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(43)\n",
    "\n",
    "series = generate_time_series(1, 50 + 10)\n",
    "X_new, Y_new = series[:, :50, :], series[:, 50:, :]\n",
    "Y_pred = model.predict(X_new)[:, -10:, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Deep RNN with Batch Norm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0947 - last_10_time_steps_mse: 0.0791 - val_loss: 0.0808 - val_last_10_time_steps_mse: 0.0747\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 6s 862us/sample - loss: 0.0549 - last_10_time_steps_mse: 0.0438 - val_loss: 0.0570 - val_last_10_time_steps_mse: 0.0469\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 6s 789us/sample - loss: 0.0507 - last_10_time_steps_mse: 0.0392 - val_loss: 0.0517 - val_last_10_time_steps_mse: 0.0394\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 5s 775us/sample - loss: 0.0481 - last_10_time_steps_mse: 0.0360 - val_loss: 0.0468 - val_last_10_time_steps_mse: 0.0344\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 6s 812us/sample - loss: 0.0464 - last_10_time_steps_mse: 0.0337 - val_loss: 0.0459 - val_last_10_time_steps_mse: 0.0326\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 6s 787us/sample - loss: 0.0450 - last_10_time_steps_mse: 0.0319 - val_loss: 0.0439 - val_last_10_time_steps_mse: 0.0306\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 6s 845us/sample - loss: 0.0441 - last_10_time_steps_mse: 0.0309 - val_loss: 0.0426 - val_last_10_time_steps_mse: 0.0288\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 6s 877us/sample - loss: 0.0426 - last_10_time_steps_mse: 0.0290 - val_loss: 0.0433 - val_last_10_time_steps_mse: 0.0293\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 6s 883us/sample - loss: 0.0407 - last_10_time_steps_mse: 0.0264 - val_loss: 0.0401 - val_last_10_time_steps_mse: 0.0253\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 6s 851us/sample - loss: 0.0394 - last_10_time_steps_mse: 0.0244 - val_loss: 0.0397 - val_last_10_time_steps_mse: 0.0243\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 6s 838us/sample - loss: 0.0376 - last_10_time_steps_mse: 0.0222 - val_loss: 0.0386 - val_last_10_time_steps_mse: 0.0230\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 6s 806us/sample - loss: 0.0368 - last_10_time_steps_mse: 0.0209 - val_loss: 0.0365 - val_last_10_time_steps_mse: 0.0208\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 6s 795us/sample - loss: 0.0358 - last_10_time_steps_mse: 0.0199 - val_loss: 0.0365 - val_last_10_time_steps_mse: 0.0206\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 6s 825us/sample - loss: 0.0350 - last_10_time_steps_mse: 0.0189 - val_loss: 0.0385 - val_last_10_time_steps_mse: 0.0230\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 6s 806us/sample - loss: 0.0345 - last_10_time_steps_mse: 0.0183 - val_loss: 0.0336 - val_last_10_time_steps_mse: 0.0167\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 6s 803us/sample - loss: 0.0338 - last_10_time_steps_mse: 0.0176 - val_loss: 0.0342 - val_last_10_time_steps_mse: 0.0172\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 5s 775us/sample - loss: 0.0334 - last_10_time_steps_mse: 0.0170 - val_loss: 0.0350 - val_last_10_time_steps_mse: 0.0186\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 6s 795us/sample - loss: 0.0324 - last_10_time_steps_mse: 0.0157 - val_loss: 0.0345 - val_last_10_time_steps_mse: 0.0174\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 6s 810us/sample - loss: 0.0319 - last_10_time_steps_mse: 0.0153 - val_loss: 0.0315 - val_last_10_time_steps_mse: 0.0140\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 6s 799us/sample - loss: 0.0314 - last_10_time_steps_mse: 0.0144 - val_loss: 0.0329 - val_last_10_time_steps_mse: 0.0159\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
    "    keras.layers.BatchNormalization(),\n",
    "    keras.layers.SimpleRNN(20, return_sequences=True),\n",
    "    keras.layers.BatchNormalization(),\n",
    "    keras.layers.TimeDistributed(keras.layers.Dense(1))\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_10_time_steps_mse])\n",
    "history = model.fit(X_train, Y_train, epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Deep RNNs with Layer Norm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.keras.layers.experimental import LayerNormalization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "class LNSimpleRNNCell(keras.layers.Layer):\n",
    "    def __init__(self, units, activation=\"tanh\", **kwargs):\n",
    "        super().__init__(**kwargs)\n",
    "        self.state_size = units\n",
    "        self.output_size = units\n",
    "        self.simple_rnn_cell = keras.layers.SimpleRNNCell(units,\n",
    "                                                          activation=None)\n",
    "        self.layer_norm = LayerNormalization()\n",
    "        self.activation = keras.activations.get(activation)\n",
    "    def get_initial_state(self, inputs=None, batch_size=None, dtype=None):\n",
    "        if inputs is not None:\n",
    "            batch_size = tf.shape(inputs)[0]\n",
    "            dtype = inputs.dtype\n",
    "        return [tf.zeros([batch_size, self.state_size], dtype=dtype)]\n",
    "    def call(self, inputs, states):\n",
    "        outputs, new_states = self.simple_rnn_cell(inputs, states)\n",
    "        norm_outputs = self.activation(self.layer_norm(outputs))\n",
    "        return norm_outputs, [norm_outputs]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 15s 2ms/sample - loss: 0.1177 - last_10_time_steps_mse: 0.1019 - val_loss: 0.0705 - val_last_10_time_steps_mse: 0.0652\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0647 - last_10_time_steps_mse: 0.0570 - val_loss: 0.0593 - val_last_10_time_steps_mse: 0.0506\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0563 - last_10_time_steps_mse: 0.0453 - val_loss: 0.0533 - val_last_10_time_steps_mse: 0.0420\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0507 - last_10_time_steps_mse: 0.0380 - val_loss: 0.0472 - val_last_10_time_steps_mse: 0.0340\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0467 - last_10_time_steps_mse: 0.0333 - val_loss: 0.0447 - val_last_10_time_steps_mse: 0.0315\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0445 - last_10_time_steps_mse: 0.0310 - val_loss: 0.0437 - val_last_10_time_steps_mse: 0.0295\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0432 - last_10_time_steps_mse: 0.0296 - val_loss: 0.0430 - val_last_10_time_steps_mse: 0.0294\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0423 - last_10_time_steps_mse: 0.0286 - val_loss: 0.0438 - val_last_10_time_steps_mse: 0.0318\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0414 - last_10_time_steps_mse: 0.0275 - val_loss: 0.0407 - val_last_10_time_steps_mse: 0.0267\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0409 - last_10_time_steps_mse: 0.0268 - val_loss: 0.0402 - val_last_10_time_steps_mse: 0.0258\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0403 - last_10_time_steps_mse: 0.0261 - val_loss: 0.0397 - val_last_10_time_steps_mse: 0.0253\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0401 - last_10_time_steps_mse: 0.0255 - val_loss: 0.0390 - val_last_10_time_steps_mse: 0.0240\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0396 - last_10_time_steps_mse: 0.0250 - val_loss: 0.0389 - val_last_10_time_steps_mse: 0.0239\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0394 - last_10_time_steps_mse: 0.0247 - val_loss: 0.0382 - val_last_10_time_steps_mse: 0.0234\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0387 - last_10_time_steps_mse: 0.0239 - val_loss: 0.0384 - val_last_10_time_steps_mse: 0.0234\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0387 - last_10_time_steps_mse: 0.0239 - val_loss: 0.0380 - val_last_10_time_steps_mse: 0.0227\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0382 - last_10_time_steps_mse: 0.0234 - val_loss: 0.0376 - val_last_10_time_steps_mse: 0.0229\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0376 - last_10_time_steps_mse: 0.0225 - val_loss: 0.0371 - val_last_10_time_steps_mse: 0.0215\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0375 - last_10_time_steps_mse: 0.0224 - val_loss: 0.0370 - val_last_10_time_steps_mse: 0.0216\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0371 - last_10_time_steps_mse: 0.0219 - val_loss: 0.0370 - val_last_10_time_steps_mse: 0.0219\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.RNN(LNSimpleRNNCell(20), return_sequences=True,\n",
    "                     input_shape=[None, 1]),\n",
    "    keras.layers.RNN(LNSimpleRNNCell(20), return_sequences=True),\n",
    "    keras.layers.TimeDistributed(keras.layers.Dense(1))\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_10_time_steps_mse])\n",
    "history = model.fit(X_train, Y_train, epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Creating a Custom RNN Class"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "class MyRNN(keras.layers.Layer):\n",
    "    def __init__(self, cell, return_sequences=False, **kwargs):\n",
    "        super().__init__(**kwargs)\n",
    "        self.cell = cell\n",
    "        self.return_sequences = return_sequences\n",
    "        self.get_initial_state = getattr(\n",
    "            self.cell, \"get_initial_state\", self.fallback_initial_state)\n",
    "    def fallback_initial_state(self, inputs):\n",
    "        return [tf.zeros([self.cell.state_size], dtype=inputs.dtype)]\n",
    "    @tf.function\n",
    "    def call(self, inputs):\n",
    "        states = self.get_initial_state(inputs)\n",
    "        n_steps = tf.shape(inputs)[1]\n",
    "        if self.return_sequences:\n",
    "            sequences = tf.TensorArray(inputs.dtype, size=n_steps)\n",
    "        outputs = tf.zeros(shape=[n_steps, self.cell.output_size], dtype=inputs.dtype)\n",
    "        for step in tf.range(n_steps):\n",
    "            outputs, states = self.cell(inputs[:, step], states)\n",
    "            if self.return_sequences:\n",
    "                sequences = sequences.write(step, outputs)\n",
    "        if self.return_sequences:\n",
    "            return sequences.stack()\n",
    "        else:\n",
    "            return outputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 17s 2ms/sample - loss: 0.1448 - last_10_time_steps_mse: 0.1458 - val_loss: 0.0818 - val_last_10_time_steps_mse: 0.0752\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0756 - last_10_time_steps_mse: 0.0691 - val_loss: 0.0707 - val_last_10_time_steps_mse: 0.0645\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0681 - last_10_time_steps_mse: 0.0601 - val_loss: 0.0641 - val_last_10_time_steps_mse: 0.0534\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0606 - last_10_time_steps_mse: 0.0498 - val_loss: 0.0580 - val_last_10_time_steps_mse: 0.0453\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0564 - last_10_time_steps_mse: 0.0440 - val_loss: 0.0540 - val_last_10_time_steps_mse: 0.0413\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0525 - last_10_time_steps_mse: 0.0401 - val_loss: 0.0506 - val_last_10_time_steps_mse: 0.0377\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0498 - last_10_time_steps_mse: 0.0370 - val_loss: 0.0481 - val_last_10_time_steps_mse: 0.0346\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0484 - last_10_time_steps_mse: 0.0346 - val_loss: 0.0465 - val_last_10_time_steps_mse: 0.0319\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0463 - last_10_time_steps_mse: 0.0325 - val_loss: 0.0450 - val_last_10_time_steps_mse: 0.0307\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0479 - last_10_time_steps_mse: 0.0324 - val_loss: 0.0454 - val_last_10_time_steps_mse: 0.0301\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0454 - last_10_time_steps_mse: 0.0306 - val_loss: 0.0449 - val_last_10_time_steps_mse: 0.0297\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0444 - last_10_time_steps_mse: 0.0300 - val_loss: 0.0431 - val_last_10_time_steps_mse: 0.0287\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0437 - last_10_time_steps_mse: 0.0297 - val_loss: 0.0434 - val_last_10_time_steps_mse: 0.0294\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0430 - last_10_time_steps_mse: 0.0291 - val_loss: 0.0415 - val_last_10_time_steps_mse: 0.0276\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0418 - last_10_time_steps_mse: 0.0281 - val_loss: 0.0410 - val_last_10_time_steps_mse: 0.0272\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0412 - last_10_time_steps_mse: 0.0275 - val_loss: 0.0408 - val_last_10_time_steps_mse: 0.0276\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0404 - last_10_time_steps_mse: 0.0265 - val_loss: 0.0396 - val_last_10_time_steps_mse: 0.0259\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0400 - last_10_time_steps_mse: 0.0258 - val_loss: 0.0391 - val_last_10_time_steps_mse: 0.0249\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0399 - last_10_time_steps_mse: 0.0259 - val_loss: 0.0391 - val_last_10_time_steps_mse: 0.0250\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0396 - last_10_time_steps_mse: 0.0253 - val_loss: 0.0397 - val_last_10_time_steps_mse: 0.0259\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    MyRNN(LNSimpleRNNCell(20), return_sequences=True,\n",
    "          input_shape=[None, 1]),\n",
    "    MyRNN(LNSimpleRNNCell(20), return_sequences=True),\n",
    "    keras.layers.TimeDistributed(keras.layers.Dense(1))\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_10_time_steps_mse])\n",
    "history = model.fit(X_train, Y_train, epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LSTMs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0806 - last_10_time_steps_mse: 0.0764 - val_loss: 0.0692 - val_last_10_time_steps_mse: 0.0621\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0653 - last_10_time_steps_mse: 0.0559 - val_loss: 0.0589 - val_last_10_time_steps_mse: 0.0460\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0526 - last_10_time_steps_mse: 0.0371 - val_loss: 0.0487 - val_last_10_time_steps_mse: 0.0313\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0464 - last_10_time_steps_mse: 0.0290 - val_loss: 0.0460 - val_last_10_time_steps_mse: 0.0290\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0437 - last_10_time_steps_mse: 0.0261 - val_loss: 0.0422 - val_last_10_time_steps_mse: 0.0240\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0418 - last_10_time_steps_mse: 0.0241 - val_loss: 0.0417 - val_last_10_time_steps_mse: 0.0247\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0405 - last_10_time_steps_mse: 0.0227 - val_loss: 0.0392 - val_last_10_time_steps_mse: 0.0212\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0391 - last_10_time_steps_mse: 0.0214 - val_loss: 0.0383 - val_last_10_time_steps_mse: 0.0205\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0379 - last_10_time_steps_mse: 0.0199 - val_loss: 0.0370 - val_last_10_time_steps_mse: 0.0183\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0369 - last_10_time_steps_mse: 0.0186 - val_loss: 0.0361 - val_last_10_time_steps_mse: 0.0174\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0361 - last_10_time_steps_mse: 0.0178 - val_loss: 0.0357 - val_last_10_time_steps_mse: 0.0172\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0357 - last_10_time_steps_mse: 0.0175 - val_loss: 0.0354 - val_last_10_time_steps_mse: 0.0168\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0352 - last_10_time_steps_mse: 0.0170 - val_loss: 0.0347 - val_last_10_time_steps_mse: 0.0161\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0349 - last_10_time_steps_mse: 0.0167 - val_loss: 0.0347 - val_last_10_time_steps_mse: 0.0160\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0346 - last_10_time_steps_mse: 0.0165 - val_loss: 0.0346 - val_last_10_time_steps_mse: 0.0160\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0343 - last_10_time_steps_mse: 0.0161 - val_loss: 0.0349 - val_last_10_time_steps_mse: 0.0166\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0341 - last_10_time_steps_mse: 0.0160 - val_loss: 0.0338 - val_last_10_time_steps_mse: 0.0151\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0339 - last_10_time_steps_mse: 0.0159 - val_loss: 0.0337 - val_last_10_time_steps_mse: 0.0158\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0337 - last_10_time_steps_mse: 0.0156 - val_loss: 0.0337 - val_last_10_time_steps_mse: 0.0151\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0336 - last_10_time_steps_mse: 0.0157 - val_loss: 0.0348 - val_last_10_time_steps_mse: 0.0163\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.LSTM(20, return_sequences=True, input_shape=[None, 1]),\n",
    "    keras.layers.LSTM(20, return_sequences=True),\n",
    "    keras.layers.TimeDistributed(keras.layers.Dense(1))\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_10_time_steps_mse])\n",
    "history = model.fit(X_train, Y_train, epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2000/2000 [==============================] - 1s 749us/sample - loss: 0.0348 - last_10_time_steps_mse: 0.0163\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.03475927668809891, 0.016288176]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(X_valid, Y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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SCZMmEDHjh2ZO3cuL7zwQp6ljo8dO0b//v0ZN24cAOPHj+eaa65h27ZtVKhQga+//pqqVasybdo0rr76akJCvH81zp8/nwceeICxY8fStWtXPv74YwYNGkSVKlXyLOn81FNPMXr0aEaPHs2kSZO47bbb6NChA9WqVSvQexo/fjwvvvgikyZNolmzZsycOZM+ffqwfv16LrnkEv79738zduxY5syZQ+PGjdmzZw9ff/014CTxXr16cffddzN79mzS09NZu3Ztzu/Ap4o6DXNp3M716fr9bcmSpbp8ueqQIarxVTL1dqbofipquoTol+2G6qhhx3XlSt/EEkg/G1em67//fmcphsJstWtrlrOgtrPVrl24199/f6Fi3rp1qwL66aef5pR1795dr7766pzn3qalHz9+vF588cU5z9944w2NiYk57fNWrVrp3XffnecYHTt21Lp16542tqysLI2NjdU5c+aoqmp6eroCumDBgjz18p+rdevWOnDgwDx1br75Zu3YsWOe4zzxxBM5+1NTUzUsLCznXN784x//0ISEhJznlSpV0meeeSZPnbZt22r//v1VVXX06NHasGFDTU9P/8Ox9uzZo4AuX778tOfLz63p+n16BSMiFYEpQDdgPzBMVWd7qSfAc8AAT9FkYKjnzeaudyswAxioqpPdjN2cXVAQtGvnbC+9FERS0h28OLMnl8x4lBtXPEe1FXO577mJNH+iOw89BD4YnHPuKuCVRB5JSdClC6SlOUPN33rL1cEY9erVo2PHjkydOpVu3brx22+/8emnnzJ37tw89ebNm8e4ceP46aefSE5OJiMjo1B/bW/ZsoXBgwfnKUtMTGT+/Pk5z/fs2cPw4cNZtmwZe/bsITMzkxMnTvDLL78U6j1t2bKFe+65J09Z+/btGTFiRJ6yJk2a5DwOCwsjNjaWvXv3FugcBw8eZN++fbRr1y5PeYcOHfj8888BuP766xk/fjy1a9fmqquu4uqrr6Znz56EhYVx4YUXcsstt9C1a1e6dOlCly5duO666wp89VSSfH3NNBFIA+KAm4FXRcRb28kgoDeQADQBrgXuyl1BRCoAjwOb3AzYFE12snlmUiw/j5hGZ1nGSSL5SHtw6ajraFppFz16wNSptlSNzyQmcuKDD05NUOeDkX533nkn7733HgcPHmT69OlUrFiRXr165exPSkri5ptvpnv37nz44Yd8++23PP3006SlpZVoHLfccgvffvstY8eOZeXKlaxfv56qVauW2HnyL6EcGhr6h/1ZJdAfmX2emjVrsnXrVl555RXKli3Lgw8+SKtWrXL6nmbNmkVSUhLt27dnwYIF1K9fn8WLFxf7/IXlswQjIlFAX2C4qiar6nLgA+CvXqr3B8ao6k5V3QWMAW7LV+dZYBzOlZAJYJ07w+qIjrQIWs/IkP+jT+hH/BDUkNarxjHwzkzi4qBbN3j9dSjgH3mmiLLatMk7QZ3L+vXrR0REBG+++SZTp07l1ltvzfPlu2rVKmrWrMk//vEPWrVqRb169di+fXuhztGwYUNWrVqVpyz/8+XLlzNkyBC6d+9O48aNiYqKYvfu3Tn7g4ODCQ4OJtMz5P5M51qxYsUfjt2oUaNCxXwmFStWpFKlSmc9T2RkJNdeey1jx45l1apVbNy4Mc/7btq0KUOHDuXLL7+kXbt2zJw5s8RiLChfNpHVBzJUdWuusg1ARy91G3v25a6Xc6UjIq2BlsA9wF/OdFIRGYRzRURcXBzLli0rSuw5kpOTi32MkhJIscCZ4/nXv6JZv748lZpew9rytaj/8ss8+fX93FPjNV5uOJpp33Vl0aJI/vY3JSHhMJdfvo8OHfZzwQVF+wszkH42JRFLTEwMx44dK3YsmZmZJXKcwujXrx9PPvkkhw8f5oYbbshz/jp16vDLL78wdepUWrRowaJFi5g3bx5ATr2UlJQzPh80aBCDBw+mcePGJCYmsmDBAtatW0dsbGxOnYsuuohp06bRsGFDjh07xvDhwwkPDyc1NTWnTrVq1fjkk09ISEggLCyMChUq/OFcgwcP5s4776Rhw4Z06tQpp8lv3rx5HDt2jIyMDABOnjyZ532qKikpKaf92aemppKVlZWz/7777mP06NFUrVqVJk2aMGfOHFatWsWYMWM4duwYs2bNAqBFixaUKVOG+fPnExoaSuXKlVm/fj2zZs3immuuoWrVqvz000989913tG/f/rTnT0lJceffS1E7bwq7AR2A3fnKBgLLvNTNBBrkel4PUECAYGAtcJln3zJgQEFisE5+dxUqnqws1XnzVCtXVhXRrHsH67ZXP9PPOv9Tr6+xUkFVRLVDB9WXX1b99VcXY3GZK538ReTrtd5VVdetW6eAtm3b1ms8jz76qMbGxmrZsmW1b9++OmHCBA0ODs6pc7ZOflXVUaNGaaVKlTQqKkpvueUWfeKJJ/J08n/zzTfaqlUrDQ8P17p16+pbb72lF198sY4aNSqnzuzZs/Wiiy7SkJCQnNd6O9eECRO0Tp06GhoaqhdddJFOnjw5Z9/pBgvEx8frSy+9dNqfUf5O/sOHD+uTTz6p8fHxGhoaqpdeeql+8MEHOfvfeecdbdOmjcbExGhUVJS2atVKFy5cqKqqv/32m/bu3VurVKmiYWFhWqNGDR06dKjXAQHZ3Ork92WCaQacyFf2MPChl7pHgNa5nrcAjnke3wdMzbXPEkyAKFI8hw+rDh58amRTUJBmRUToT2+u1JEjVS+55NSuxETV++5TffRRPetotED62ZzvCeZMAime8zkWtxKMLzv5twIhIlIvV1kC3jvpN3n2eavXBegjIrtFZDfQFhgjIhNciNm4LSYGxo+H7JE5WVlISgp1BnfnyS038N3tL7L9rRU89+RJ9u93qv7rX84AgjvugG++cdKPMSbw+KwPRlWPi8i7wNMiMgBoCvTCSRD5zQQeEpGPcZrGHgbGe/bdBkTkqvsu8DbO8GdTWt1yC0yb5kw1ExwMzZs7w2rnzaMm8FhwMP3jmvAebVhFG9Zoa2ZMa8C0aUFUr+5MYdOrF3TsaJM9GxMofH0n/z3AVGAvcAD4m6puEpEOwCeqWtZTbxJQB/jO83yypwxVPZz7gCKSBhxVVVsmqzQ73cSbu3fDmjWwejURi9Zw42+zuZvXAEgvE82+mi1ZmdGGf7/RhlsntuZkTBWGtEqiQ+Z7HM8IJ6qrTbppjL/4NMGo6kGc+1vyl38FlM31XIG/e7azHbNTCYZo/MnbxJuVKzuXJz17Uv4ZSFqRxXdv/8gVZddw0YHVVF2zhn4b/kU/z+idI6kXUnbxASCLtKWTeKD159Tvn0jPnuCH+8yMOa/ZXGSmVElsF0Riu4ZAQ5zbpYCTJ+Hbb2HNGmKmTUM37kWASFIYuu46xq/5G93u7UOZ5g3p1Vvo1QuSk+GLL/6wSkFAU9U/3NBnTHGpi52YlmBM6RcZCW3bOlubNkiXLmhqKhIcTOV6MTyz+Qme4Ql+2VyPed/05u4RvVlDG7IkmNBQZ4boXDeXB6Tg4GDS09MJsw4mU8LS09NPO7lncdl0/ebc4unL+fmOO5xLlE2bYNcuePVVanSswyOhY1lJO3YSz2s6iC5pH3N97xTq1oXbb4fp0+HnnwNvZFr58uXZs2dPiUw3Yky2rKws9uzZQ0xhZtUuBLuCMeeexER+SU2lTnbbV9WqcPfdcPfdyJEjbH35EzY+vYAbM+cwiDdICS3LupRrmDG/Nw9M784RylO9Olx+uTMq7fLLoX598GfrVGxsLDt37uTHH38s1nFSUlKIiIg4e0UfCaR4ztdYoqKiiI2NdeXYlmDM+SUmhvojbuDAlTfw6uJUro36nIY/vke799+n3fH5TAoJ4deLOrOoTG+++Kga/3trE1PpxPbKiVx++amk06gRrF7tdbVpVwQFBVGjRo1iH2fZsmU0a9asBCIqGYEUj8VS8izBmPOSM2AtHLjG2V59FVavRhYsoMaCBdz5zb3ciXMTlgYFs7DCw4z74haG/LsRWQQTHe0MFFB17rv5z3+cRGOMOcX6YIwBZ32BxER4/nnYutVZMVIEAYKyMrl2y/Ms2tOE9LIV2dn4Kp6PeoorshZRVo+SmgpXXAHNmjnLSE+ZAhs3gmfktDHnLbuCMSY/EfjLX2DSpFOLc82YASdPErRyJfFJSQza/RR3oWQhfC+Xsr9eW75Ob8u8OYm8/npdQChTBlq0gMqV67JnD7RuDbVq+bcvxxhfsgRjjDenm1ng1lsBkCNH2Dx9DQc+XMmlx1bS5IfZXHH0NR4DMipW4vfabfk2oi1bdkaTsmI3Y+dfxSoSiY2FVq2cZNO6tfN42zbf9eUY40uWYIw5HW8zC2SLiaHR/VfC/Vc6zzMzYfNmSEoiZOVKqq9cSfV179PTU30ET3E0tg6/hNdj66pqbPoknveIZyLx/EY8O4lneFAsN9woNG8OcXF5t9hYpxXPmNLEEowxJSE4GC691NkGDXLKnngCnn3WmSFahJhK4VwadYBLd23kz7IbyXezTWpWGLveinc24tmA8/9dxFORQzQp81++u7AL/6vbjUpVQv6QhPbsca6Grr7auefUGH+zBGOMW3r0gBdfJCs1laDwcKf333NFJBkZsHs3332yk38O3kVc+i6qB+/i1s47uezELvTXdQTv+YDg1JOnjncC2P4ibIdjUo6DVOSgVuAgFTlEBVKoSBQVeH9URRbGVqBczYpEVatA+ToVia1XgTpZ27hw1Xw0LBxpa21xxn2WYIxxi6cfZ/vUqdS54468zW0hIVCtGpcOrMaQS5w+mLadoFLu731VOHQInnoKJkyArCynnaxzZ8pdcgllDx0ifu9B0vcd4vBPm+HwISpykHDSYD/Oti5vSArom2/wZdQ1/FjjSk7UTyCoaQKVG1WkVi3Ytw82bIDOna0/yBSfJRhj3JR/VgHvVbx/mYtAxYpwww3wxhunRrSNGgWJiQjOP+AQYH0SdOkCaalKTNhJPpt3iBa1D8KhQxz/9SDp094kZsm7iJNiaJ3yJR23fAxbgPfhV6qxgQTW05QNJDCdBKhTl+q1gomN5axbZGTe0JOSStnAhaQkarz1FoSHl5KASwdLMMYEutONaPNJSxcAAAAa1UlEQVRaRejUqQwtEssA8QBEAdSJg5Uf5zTXRS75DOrUgQ0bSFm9gbKrN9B0+XquPvIfQsgE4MTPZfh576V8H5zA2owElhxPYANNuITv6cQyltGJVTixlClzKtmEhMC6dc4FV3Cws1hps2ZQoULeLfa/SVSfffov9QIlqYJmspMnnavB7O3w4VOPN26EGTOonZkJb77p/CCtE8uxciXxULmoL7cEY0xpcKYRbQWpcrrmum7diOjWjQjghyS49IoULkrbTPPgDYzss4HGezfQeMN8rj/+es6hVMRpvpMgDlRrwvHQ8qSnQ3oapO0QkpMhJdNzs08G6DjnsSKkAruBExyhCuuoTRaZk6eyNrIDx8rEERweSnBECGkayk/bQyinIawJCiWsUwjV6oQSFR1CZEwowWEhziSmkyY5d7QGB0Pv3hARkTeRZG+pqWf9EQtASoozSqJPH+jWDbp2dUZQnC9UndlelyxxphlfvJjK2X+pFIElGGPOF2dprktMhI8/j2DZsuZ06tScKtnVVGHnTqdz5uWXkcWLPeVZxAYfJrZa9Kl6wNGjynffgWZBUJDSsCFERigZ6U4uyMhQwvftIehQFgIoWVyc9QNHT+5GkjMIykxHMjK4lAxCSSckK4PQz9MJ+TyDUE4zPUJGBukLPuRk+SpkRldAKlQguHojwlpWYH9mBf67vwI1EipQp3n5P15KbdkCV12Vs8QDrVvDwoUwc6Zz7KZNnWRz5ZXQvr2TxM4lv/8On3/ubEuWwI4dTnm5csU+tCUYY0wOr1dBIlC9urNdcAGsWHGqP2j27D+8IBoIytVyVcFbPktyOo2ym+zKL1lA+VzHScruU0qD0FB48UW48ELYu0fZtzuTA3syqLhlOY+t6ElIVhpphNElcwmrDiQ6i7H//MdTyiKoWRMqVXKa9MqUgagoKFOmA5dcvYRq294juWVvDl6cSFTPLKrv/5ZaWz8jfvNnVHzxJYKef5604AgOXdqRqD93I7R7N8KaNUaCCj41Q0D0TR065ASRnVC2bHHKy5d3Rnc8+qgz99GhQ9C1K3ryZJEXr7AEY4wpuAL0B2VXO+MX6JlG2J3xNLmHNnSFJKdSSKdOfNkykf37Ye/eU9vs2fDJJ6fW94mKcnLkiRPO/hMn4Phx+PhEIseOtSb1u2DPeYKAFp5tGFEk05EvuDJzEd3Wf0bc+odhBPxGFb4IvZKVZbvxTcWu1A/5H4lpy9hapRM7qydStiw524EDzkj1jAwnaY4Z43T1xMQ43+0xMU7/VUEGHBSqf6pNG0hPP5VQvvnG+YGUKQMdOjgLIV1xhXOlFhyc9xhLlrCnbdvfzvCbPCNLMMaYwilAf1BBj3O2JruzniZXpVCgShVny1anDixdeuqC6403Tn/MZcu+4vLLO5GS4iSd7ORz4gS8/npZpkzpwcdZPQgKgls7/0q/mEVU3/IZ1/68kBsPzYRDkIUgKFk/B7EpvDn7iSUlM5TUjBDSCaE9oWQQQkZaCOn3hbKSEDIIId1THh+8mxsz36QWmWRMmc5nVW/jePlqRERARLgSEa6cPKGs/VrJyoJlQYp0VuIqKUGiBAU5zZLh+3dywWfzINNpUhRAQ0NJa34ZGY88SVanK6BNG9Z9F8bKldA5DRKDvfxQEhPZ5XSbFYklGGPMOauAF1w5goJONZ/llp7uDDDLTlSDRlUnMfEO4A5nuNy338LjjxP02WcABJNFk7i9ECeQkYGmp3PiaAa//5pBsDp9SxXKZRBCBpKRjmRmIJkZBGWm5UxxH6QZdN81GXb9Mc6uCIpAFugS53H2BhBEJpCJeP47g/7clz6BE6ujYDXwr7zvOTzc+TmVdLOdJRhjzDmtJC64zpiogoKcabNHjoSvvjqVhebOPTVzA85w8X25mraqFaBvis8+c9rRPFNwp6YJixdDv35O0gsJce7BbdjQee4MooCy3yVx2RNdCMpIQ0PCqPzYIMbXispT59NPnXWMsrKckJctswRjjDF+UdB+pbPdr1ScvqnwcGcGos8/P8tV2dWJ0N6JJahTJ7p7qdS6tXOM7HzoxoJ5lmCMMaaklNDlUpFnfyhEpcI2HxaFJRhjjDlPldR4jdOxFSaMMca4whKMMcYYV1iCMcYY4wpLMMYYY1xhCcYYY4wrLMEYY4xxhSUYY4wxrrAEY4wxxhU+TTAiUlFEFojIcRHZISI3naaeiMhoETng2UaLOJPxiEisiKzwlB8WkSQRaefL92GMMebsfH0n/0QgDYgDmgILRWSDqm7KV28Q0BtIABRYhLOE0GtAMnAH8F/Pvl7AhyJyoaqeZrk7Y4wxvuazKxgRiQL6AsNVNVlVlwMfAH/1Ur0/MEZVd6rqLmAMcBuAqqao6o+qmgWe2aihAlDRB2/DGGNMAYlqkVfDLNyJRJoBK1S1TK6yR4COqnptvrpHgG6qutrzvCWwVFXL5aqzEWiAs87QZFUdeJrzDsK5IiIuLq7F3Llzi/U+kpOTKVu2bLGOUVICKRYIrHgsFu8CKRYIrHgsFu86d+68TlVbFunFquqTDegA7M5XNhBY5qVuJtAg1/N6OM1hkq9eBHAj0L8gMbRo0UKLa+nSpcU+RkkJpFhUAysei8W7QIpFNbDisVi8A9ZqEb/3fdkHkwxE5yuLBo4VoG40kOx5szlUNQWYIyJbRGS9qm4oyYCNMcYUnS9HkW0FQkSkXq6yBCB/Bz+esoQC1MsWCtQpdoTGGGNKjM8SjKoeB94FnhaRKM/Q4l7ALC/VZwIPiUi8iFQFHgamA4jIZSLSXkTCRCRSRB7DGZW22idvxBhjTIH4epjyPcBUYC9wAPibqm4SkQ7AJ6qa3as1CeeK5DvP88meMoBwYJxnf7qnTg9V/c03b8EYY0xB+DTBqOpBnPtb8pd/BZTN9VyBv3u2/HW/IG/zmTHGmABkU8UYY4xxhSUYY4wxrrAEY4wxxhXFSjCeUVxdRaRmSQVkjDHm3FCoBCMi00XkHs/jMGAN8Bnwo4hc40J8xhhjSqnCXsFcBazyPO4JlAMqAyM9mzHGGAMUPsFUwLmHBeBq4B1V3QvMBRqVZGDGGGNKt8ImmN3AJSISjHM1s9hTXhbnpkdjjDEGKPyNllOBecBvODMeL/GUtwF+KMG4jDHGlHKFSjCq+rSIbAJqAPNVNc2zKwMYXdLBGWOMKb0KPVWMqr7jpWxGyYRjjDHmXFHYYcp/EZFuuZ6PEJGdIvKpiFQp+fCMMcaUVoXt5B+Z/UBEmgOP48xsHAqMKbmwjDHGlHaFbSKrCfzoedwHeE9VnxeRz4BPSzQyY4wxpVphr2BScG6uBOjCqWHKR3KVG2OMMYW+gvkKGCMiy4GWQD9PeX3g15IMzBhjTOlW2CuYwUAaTmK5O9cqktdgTWTGGGNyKex9MDuBa72UP1BiERljjDknFGnJZBG5AmfuMQU2q+rSEo3KGGNMqVeoBCMi8cACoAXOdDEAVUVkLdAnV5OZMcaY81xh+2DG4cxBdpGqVlfV6kA9T9m4kg7OGGNM6VXYJrIrgU6q+nN2gar+T0SGcGriS2OMMaZISyZrAcuMMcacxwqbYJYA40WkenaBiNQAxgKfl2RgxhhjSrfCJpghQBTwPxHZISI7gJ+AMsB9JR2cMcaY0quw98H86pnksivQwFO8BdgGvAj8pWTDM8YYU1oVZT0YBRZ5NgBEJAHoW4JxGWOMKeWK0slvjDHGnJUlGGOMMa6wBGOMMcYVBeqDEZEPzlIlugRiMcYYcw4paCf/gQLs//ksdYwxxpxHCpRgVPV2twMxxhhzbrE+GGOMMa7waYIRkYoiskBEjntmArjpNPVEREaLyAHPNlpExLOvvoi8LyL7ROSgiHwqIhf78n0YY4w5O19fwUzEWXI5DrgZeFVEGnupNwjoDSQATXBW0bzLs6888AFwsec4a4D33Q3bGGNMYfkswYhIFM7d/sNVNVlVl+Mkir96qd4fGKOqO1V1FzAGuA1AVdeo6hRVPaiq6cBLwMUicoFP3ogxxpgCEWfmFx+cSKQZsEJVy+QqewToqKrX5qt7BOimqqs9z1sCS1W1nJfj9gZeVdUqpznvIJwrIuLi4lrMnTu3WO8jOTmZsmXLFusYJSWQYoHAisdi8S6QYoHAisdi8a5z587rVLVlkV6sqj7ZgA7A7nxlA4FlXupmAg1yPa+Hs+aM5KtXDdgF3FiQGFq0aKHFtXTp0mIfo6QEUiyqgRWPxeJdIMWiGljxWCzeAWu1iN/7vuyDSeaPN2RGA8cKUDcaSPa8WQBEpBLwGfCKqs4p4ViNMcYUky8TzFYgRETq5SpLADZ5qbvJs89rPRGpgJNcPlDVZ1yI1RhjTDH5LMGo6nHgXeBpEYkSkXZAL2CWl+ozgYdEJF5EqgIPA9MBRCQa+BSnP2eoT4I3xhhTaL4epnwPEAnsBeYAf1PVTSLSQUSSc9WbBHwIfAd8Dyz0lAH0AVoBt4tIcq6ths/ehTHGmLMq9IJjxaGqB3Hub8lf/hVQNtdzBf7u2fLXnQHMcDFMY4wxJcCmijHGGOMKSzDGGGNcYQnGGGOMKyzBGGOMcYUlGGOMMa6wBGOMMcYVlmCMMca4whKMMcYYV1iCMcYY4wpLMMYYY1xhCcYYY4wrLMEYY4xxhSUYY4wxrrAEY4wxxhWWYIwxxrjCEowxxhhXWIIxxhjjCkswxhhjXGEJxhhjjCsswRhjjHGFJRhjjDGusARjjDHGFZZgjDHGuMISjDHGGFdYgjHGGOMKSzDGGGNcYQnGGGOMKyzBGGOMcYUlGGOMMa6wBGOMMcYVlmCMMca4whKMMcYYV1iCMcYY4wqfJhgRqSgiC0TkuIjsEJGbTlNPRGS0iBzwbKNFRHLtf11EfhSRLBG5zWdvwBhjTIH5+gpmIpAGxAE3A6+KSGMv9QYBvYEEoAlwLXBXrv0bgHuAb1yN1hhjTJH5LMGISBTQFxiuqsmquhz4APirl+r9gTGqulNVdwFjgNuyd6rqRFVdAqS4H7kxxpiiEFX1zYlEmgErVLVMrrJHgI6qem2+ukeAbqq62vO8JbBUVcvlq7ccmKyq089w3kE4V0TExcW1mDt3brHeR3JyMmXLli3WMUpKIMUCgRWPxeJdIMUCgRWPxeJd586d16lqyyK9WFV9sgEdgN35ygYCy7zUzQQa5HpeD1A8CTFX+XLgtoLG0KJFCy2upUuXFvsYJSWQYlENrHgsFu8CKRbVwIrHYvEOWKtF/N73ZR9MMhCdrywaOFaAutFAsufNGmOMKQV8mWC2AiEiUi9XWQKwyUvdTZ59Z6tnjDEmQPkswajqceBd4GkRiRKRdkAvYJaX6jOBh0QkXkSqAg8D07N3ikiYiEQAAoSKSISI2D09xhgTQHz9pXwPEAnsBeYAf1PVTSLSQUSSc9WbBHwIfAd8Dyz0lGX7DDgJtAVe9zy+3P3wjTHGFFSIL0+mqgdx7m/JX/4VUDbXcwX+7tm8HaeTSyEaY4wpIdasZIwxxhWWYIwxxrjCEowxxhhXWIIxxhjjCkswxhhjXGEJxhhjjCsswRhjjHGFJRhjjDGusARjjDHGFZZgjDHGuMISjDHGGFdYgjHGGOMKSzDGGGNcYQnGGGOMKyzBGGOMcYUlGGOMMa6wBGOMMcYVlmCMMca4whKMMcYYV1iCMcYY4wpLMMYYY1xhCcYYY4wrLMEYY4xxhSUYY4wxrrAEY4wxxhWWYIwxxrjCEowxxhhXWIIxxhjjCkswxhhjXGEJxhhjjCsswRhjjHGFJRhjjDGusARjjDHGFZZgjDHGuMKnCUZEKorIAhE5LiI7ROSm09QTERktIgc822gRkVz7m4rIOhE54fl/U9+9C2OMMQXh6yuYiUAaEAfcDLwqIo291BsE9AYSgCbAtcBdACISBrwPvAlUAGYA73vKjTHGBAifJRgRiQL6AsNVNVlVlwMfAH/1Ur0/MEZVd6rqLmAMcJtnXycgBBirqqmqOg4Q4AqX34IxxphCCPHhueoDGaq6NVfZBqCjl7qNPfty12uca99GVdVc+zd6yv+T/0AiMgjnigggWUR+LFr4OWKB/cU8RkkJpFggsOKxWLwLpFggsOKxWLy7uKgv9GWCKQsczVd2BCh3mrpH8tUr6+mHyb/vTMdBVV8HXi9KwN6IyFpVbVlSxyuOQIoFAisei8W7QIoFAisei8U7EVlb1Nf6sg8mGYjOVxYNHCtA3Wgg2XPVUpjjGGOM8RNfJpitQIiI1MtVlgBs8lJ3k2eft3qbgCa5R5XhDATwdhxjjDF+4rMEo6rHgXeBp0UkSkTaAb2AWV6qzwQeEpF4EakKPAxM9+xbBmQCQ0QkXEQGe8o/dzP+XEqsua0EBFIsEFjxWCzeBVIsEFjxWCzeFTkWydtX7i4RqQhMBa4EDgBDVXW2iHQAPlHVsp56AowGBnheOhl4LLtjX0SaecoaAVuAO1X1W5+9EWOMMWfl0wRjjDHm/GFTxRhjjHGFJRhjjDGusARTAJ7BBFM886cdE5H1InJNAMRVT0RSROTNAIjlBhHZ4pln7idPv5o/4qglIh+LyCER2S0iE0TEJ/d7ichgEVkrIqkiMj3fvi4i8oNn/rylIlLTH7GIyGUiskhEDorIPhGZLyJV/BFLvjojRERFpKubsZwtHhEpIyKviMh+ETkiIl/6MZa/eP5NHRORzSLS2+VYzvg9V5TPsCWYggkBfsWZdSAGeAL4t4jU8mNM4Mzt9rWfY0BErsQZlHE7zg2vlwP/81M4rwB7gSpAU5zf2T0+OvdvwP/hDGTJISKxOCMohwMVgbXAPH/EgjN/3+tALaAmzv1j0/wUCwAiUhe4Dvjd5TgKEs/rOL+jhp7/P+iPWEQkHme+xYdw7vN7FJgtIhe6GMtpv+eK+hn25Z38pZZniPXIXEUficjPQAtguz9iEpEbgMPASuAif8SQy1PA06q6yvN8lx9jqQ1MUNUUYLeI/IdT0wy5SlXfBRCRlkC1XLv+DGxS1fme/SOB/SLSQFV/8GUsqvpJ7noiMgH4wo0YzhZLLhOBx3D+OHDd6eIRkQZAT6CaqmbPOrLOH7F4Hh/O9ftaKCLHgbo4f0C5EcuZvucuoAifYbuCKQIRicOZW80vN3eKSDTwNM5fN34lIsFAS6CSiGwTkZ2eZqlIP4U0FrjB09QRD1yDlznqfCzP3Hqef8g/4aPEdxaX48eblEXkOiBVVT/2Vwy5tAZ2AE95msi+E5G+foplLbBFRHqKSLCneSwVZ95Fn8j3PVekz7AlmEISkVDgLWCGW399FsAoYIqq7vTT+XOLA0KBfkAHnGapZjiX1/7wJc6H/iiwE+cf6nt+iiVboebP8xURaQKMwGl+8cf5ywH/BO73x/m9qAZcgvO7qQoMBmaISENfB6KqmTg3nM/GSSyzgbs8X+yu8/I9V6TPsCWYQhCRIJyZB9JwPnz+iKEp0BV4yR/n9+Kk5//jVfV3Vd0PvAh093Ugnt/Pf3DaiqNwZqStgNM/5E8BN3+eiFwEfALcr6pf+SmMkcAsVd3up/PndxJIB/5PVdNU9QtgKdDN14F4Bjs8j7M8SRhOv8hk8cHiiqf5nivSZ9gSTAGJiABTcP5i76uq6X4KpRNOB+0vIrIbeAToKyLf+CMYVT2Ec6WQ+45df929WxGogdMHk6qqB3A6sH2e7PLJM7eeOGsj1cV/Taw1gcXAKFX1NlWTr3TBmfJpt+ezXB2nU/kxP8XjrfnJX5/lpsCXqrpWVbNU9WtgNc4fl645w/dckT7DlmAK7lWckSXXqurJs1V20es4v9imnu01YCFwlR9jmgbcJyIXikgFnJE3H/k6CM/V08/A30QkRETK4yxe55N2a885I4BgIFhEIsQZIr0AuERE+nr2j8BZ08i1JtbTxeLpl/ocJwm/5tb5CxILToK5hFOf5d9wVq6d6Kd4vgR+AYZ56rQDOgOf+iGWr4EO2Vcs4kyP1QH3P8un+54r2mdYVW07y4YznFOBFJxLxezt5gCIbSTwpp9jCMUZAXQY2A2MAyL8FEtTnAlRD+Es2PRvIM6HvwvNt4307OsK/IDTDLMMqOWPWIAnPY9zf46T/fVzyVdvO9DVz7+nxkAScBzYDPTxYyyDgW04zVD/Ax52OZYzfs8V5TNsc5EZY4xxhTWRGWOMcYUlGGOMMa6wBGOMMcYVlmCMMca4whKMMcYYV1iCMcYY4wpLMMaUEuKsl9LP33EYU1CWYIwpABGZ7vmCz7+tOvurjTk/2XowxhTcYuCv+crS/BGIMaWBXcEYU3Cpqro733YQcpqvBovIQs+SsjtE5JbcLxaRS0VksYicFGfJ4ukiEpOvTn/POiSpIrJHRGbki6GiOMscHxeR/3k5xwjPuVM9k0jOdOUnYUwBWIIxpuQ8BXyAMx/a68BMz0qF2bPPfoozt1NroA/QllxL5YrIXcAknMlDm+DMAv19vnOMAN7Hmdl2HjBVRGp4Xt8XZ3bte4B6wJ+ANS68T2MKxOYiM6YARGQ6cAvORIC5TVTVx0REgcmqOjDXaxYDu1X1FhEZCLyAsxzvMc/+TjjrjdRT1W0ishNn4tKhp4lBgedUdZjneQjOwmqDVPVNEXkIZzbiS9R/y0kYk8P6YIwpuC+BQfnKDud6nJRvXxLQw/O4Ic705rkXaFoJZAGNROQoEA8sOUsMOdO1q2qGiOwDLvQUzcdZHfJnEfkUZ/G1D1Q19SzHNMYV1kRmTMGdUNVt+bb9JXDcwjQj5L8yUTz/jlX1V+BinKuYo8AYYJ2nec4Yn7MEY0zJuczL8y2ex1uASz3r0Gdri/NvcIuq7gV24SzCVWSqmqKqC1X1QaAVzvom7YpzTGOKyprIjCm4cBGpnK8sU1X3eR7/WUS+xlmMqR9Osmjj2fcWziCAmSIyAqiA06H/rqpu89R5BnhJRPbgrFJaBuiiqmMKEpyI3Ibzb3o1zmCC63GueP5byPdpTImwBGNMwXUFfs9Xtguo5nk8EuiLs6LnPuB2ddZSR1VPiMhVwFickV0pOKPB7s8+kKq+KiJpwMPAaOAg8HEh4jsMPIYzmCAUZ0XGP6vqz4U4hjElxkaRGVMCPCO8rlPVt/0dizGBwvpgjDHGuMISjDHGGFdYE5kxxhhX2BWMMcYYV1iCMcYY4wpLMMYYY1xhCcYYY4wrLMEYY4xxxf8DcfPI5wzBog8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(43)\n",
    "\n",
    "series = generate_time_series(1, 50 + 10)\n",
    "X_new, Y_new = series[:, :50, :], series[:, 50:, :]\n",
    "Y_pred = model.predict(X_new)[:, -10:, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# GRUs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 16s 2ms/sample - loss: 0.0805 - last_10_time_steps_mse: 0.0783 - val_loss: 0.0716 - val_last_10_time_steps_mse: 0.0682\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0701 - last_10_time_steps_mse: 0.0657 - val_loss: 0.0684 - val_last_10_time_steps_mse: 0.0641\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 15s 2ms/sample - loss: 0.0648 - last_10_time_steps_mse: 0.0589 - val_loss: 0.0605 - val_last_10_time_steps_mse: 0.0525\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 15s 2ms/sample - loss: 0.0558 - last_10_time_steps_mse: 0.0445 - val_loss: 0.0515 - val_last_10_time_steps_mse: 0.0374\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0489 - last_10_time_steps_mse: 0.0337 - val_loss: 0.0468 - val_last_10_time_steps_mse: 0.0300\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0452 - last_10_time_steps_mse: 0.0284 - val_loss: 0.0436 - val_last_10_time_steps_mse: 0.0261\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0433 - last_10_time_steps_mse: 0.0262 - val_loss: 0.0419 - val_last_10_time_steps_mse: 0.0241\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0419 - last_10_time_steps_mse: 0.0245 - val_loss: 0.0408 - val_last_10_time_steps_mse: 0.0227\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0405 - last_10_time_steps_mse: 0.0230 - val_loss: 0.0395 - val_last_10_time_steps_mse: 0.0213\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0393 - last_10_time_steps_mse: 0.0218 - val_loss: 0.0384 - val_last_10_time_steps_mse: 0.0207\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0382 - last_10_time_steps_mse: 0.0208 - val_loss: 0.0379 - val_last_10_time_steps_mse: 0.0197\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0376 - last_10_time_steps_mse: 0.0203 - val_loss: 0.0369 - val_last_10_time_steps_mse: 0.0196\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0369 - last_10_time_steps_mse: 0.0199 - val_loss: 0.0364 - val_last_10_time_steps_mse: 0.0195\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0364 - last_10_time_steps_mse: 0.0194 - val_loss: 0.0360 - val_last_10_time_steps_mse: 0.0192\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0359 - last_10_time_steps_mse: 0.0190 - val_loss: 0.0355 - val_last_10_time_steps_mse: 0.0187\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0355 - last_10_time_steps_mse: 0.0188 - val_loss: 0.0353 - val_last_10_time_steps_mse: 0.0183\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0354 - last_10_time_steps_mse: 0.0190 - val_loss: 0.0353 - val_last_10_time_steps_mse: 0.0188\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0350 - last_10_time_steps_mse: 0.0184 - val_loss: 0.0352 - val_last_10_time_steps_mse: 0.0189\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0346 - last_10_time_steps_mse: 0.0180 - val_loss: 0.0342 - val_last_10_time_steps_mse: 0.0175\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0343 - last_10_time_steps_mse: 0.0178 - val_loss: 0.0346 - val_last_10_time_steps_mse: 0.0180\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.GRU(20, return_sequences=True, input_shape=[None, 1]),\n",
    "    keras.layers.GRU(20, return_sequences=True),\n",
    "    keras.layers.TimeDistributed(keras.layers.Dense(1))\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_10_time_steps_mse])\n",
    "history = model.fit(X_train, Y_train, epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2000/2000 [==============================] - 2s 767us/sample - loss: 0.0346 - last_10_time_steps_mse: 0.0180\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.03462266159057617, 0.018013379]"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(X_valid, Y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(43)\n",
    "\n",
    "series = generate_time_series(1, 50 + 10)\n",
    "X_new, Y_new = series[:, :50, :], series[:, 50:, :]\n",
    "Y_pred = model.predict(X_new)[:, -10:, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using One-Dimensional Convolutional Layers to Process Sequences"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "1D conv layer with kernel size 4, stride 2, VALID padding:\n",
    "\n",
    "              |-----2----|      |-----5---...         |----23-----|\n",
    "        |-----1----|      |-----4-----|   ...   |-----22----|\n",
    "  |-----0----|      |-----3----|      |---...-21---|\n",
    "X: 0  1  2  3  4  5  6  7  8  9  10 11 12 ... 43 44 45 46 47 48 49\n",
    "Y: 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 53 54 55 56 57 58 59\n",
    "\n",
    "Output:\n",
    "\n",
    "X: 0  1  2  3  4  5  ... 19 20 21 22 23\n",
    "Y: 13 15 17 19 21 23 ... 51 53 55 57 59\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0792 - last_5_time_steps_mse: 0.0762 - val_loss: 0.0696 - val_last_5_time_steps_mse: 0.0649\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 6s 922us/sample - loss: 0.0638 - last_5_time_steps_mse: 0.0597 - val_loss: 0.0576 - val_last_5_time_steps_mse: 0.0533\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 7s 964us/sample - loss: 0.0517 - last_5_time_steps_mse: 0.0453 - val_loss: 0.0474 - val_last_5_time_steps_mse: 0.0397\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 7s 930us/sample - loss: 0.0463 - last_5_time_steps_mse: 0.0389 - val_loss: 0.0449 - val_last_5_time_steps_mse: 0.0368\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 7s 929us/sample - loss: 0.0430 - last_5_time_steps_mse: 0.0350 - val_loss: 0.0414 - val_last_5_time_steps_mse: 0.0327\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 6s 922us/sample - loss: 0.0400 - last_5_time_steps_mse: 0.0311 - val_loss: 0.0384 - val_last_5_time_steps_mse: 0.0288\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 6s 918us/sample - loss: 0.0370 - last_5_time_steps_mse: 0.0269 - val_loss: 0.0360 - val_last_5_time_steps_mse: 0.0249\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 6s 928us/sample - loss: 0.0351 - last_5_time_steps_mse: 0.0238 - val_loss: 0.0346 - val_last_5_time_steps_mse: 0.0234\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 6s 927us/sample - loss: 0.0338 - last_5_time_steps_mse: 0.0218 - val_loss: 0.0333 - val_last_5_time_steps_mse: 0.0212\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 7s 945us/sample - loss: 0.0332 - last_5_time_steps_mse: 0.0208 - val_loss: 0.0329 - val_last_5_time_steps_mse: 0.0209\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 7s 953us/sample - loss: 0.0326 - last_5_time_steps_mse: 0.0203 - val_loss: 0.0329 - val_last_5_time_steps_mse: 0.0207\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 7s 950us/sample - loss: 0.0323 - last_5_time_steps_mse: 0.0198 - val_loss: 0.0318 - val_last_5_time_steps_mse: 0.0195\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 6s 917us/sample - loss: 0.0319 - last_5_time_steps_mse: 0.0194 - val_loss: 0.0316 - val_last_5_time_steps_mse: 0.0193\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 7s 933us/sample - loss: 0.0315 - last_5_time_steps_mse: 0.0189 - val_loss: 0.0318 - val_last_5_time_steps_mse: 0.0194\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 7s 930us/sample - loss: 0.0312 - last_5_time_steps_mse: 0.0184 - val_loss: 0.0309 - val_last_5_time_steps_mse: 0.0183\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 6s 928us/sample - loss: 0.0308 - last_5_time_steps_mse: 0.0180 - val_loss: 0.0310 - val_last_5_time_steps_mse: 0.0182\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 7s 955us/sample - loss: 0.0306 - last_5_time_steps_mse: 0.0177 - val_loss: 0.0305 - val_last_5_time_steps_mse: 0.0174\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 7s 933us/sample - loss: 0.0304 - last_5_time_steps_mse: 0.0174 - val_loss: 0.0309 - val_last_5_time_steps_mse: 0.0182\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 6s 925us/sample - loss: 0.0301 - last_5_time_steps_mse: 0.0171 - val_loss: 0.0296 - val_last_5_time_steps_mse: 0.0163\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 6s 925us/sample - loss: 0.0298 - last_5_time_steps_mse: 0.0166 - val_loss: 0.0304 - val_last_5_time_steps_mse: 0.0172\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "def last_5_time_steps_mse(Y_true, Y_pred):\n",
    "    return keras.metrics.mean_squared_error(Y_true[:, -5:], Y_pred[:, -5:])\n",
    "\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.Conv1D(filters=20, kernel_size=4, strides=2, padding=\"VALID\",\n",
    "                        input_shape=[None, 1]),\n",
    "    keras.layers.GRU(20, return_sequences=True),\n",
    "    keras.layers.GRU(20, return_sequences=True),\n",
    "    keras.layers.TimeDistributed(keras.layers.Dense(1))\n",
    "])\n",
    "\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_5_time_steps_mse])\n",
    "history = model.fit(X_train, Y_train[:, 3::2], epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid[:, 3::2]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## WaveNet"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "C2     /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\.../\\ /\\ /\\ /\\ /\\ /\\ \n",
    "      /  \\  /  \\  /  \\  /  \\  /  \\  /  \\       /  \\  /  \\  /  \\\n",
    "     /    \\      /    \\      /    \\                 /    \\\n",
    "C1  /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\  /\\ /.../\\ /\\ /\\ /\\ /\\ /\\ /\\\n",
    "X: 0  1  2  3  4  5  6  7  8  9  10 11 12 ... 43 44 45 46 47 48 49\n",
    "Y: 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 53 54 55 56 57 58 59\n",
    "\n",
    "Output:\n",
    "\n",
    "X: 0  1  2  3  4  5  ... 19 20 21 22 23\n",
    "Y: 13 15 17 19 21 23 ... 51 53 55 57 59\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/20\n",
      "7000/7000 [==============================] - 4s 572us/sample - loss: 0.0636 - last_10_time_steps_mse: 0.0549 - val_loss: 0.0445 - val_last_10_time_steps_mse: 0.0319\n",
      "Epoch 2/20\n",
      "7000/7000 [==============================] - 2s 308us/sample - loss: 0.0402 - last_10_time_steps_mse: 0.0266 - val_loss: 0.0379 - val_last_10_time_steps_mse: 0.0240\n",
      "Epoch 3/20\n",
      "7000/7000 [==============================] - 2s 307us/sample - loss: 0.0366 - last_10_time_steps_mse: 0.0222 - val_loss: 0.0360 - val_last_10_time_steps_mse: 0.0216\n",
      "Epoch 4/20\n",
      "7000/7000 [==============================] - 2s 310us/sample - loss: 0.0347 - last_10_time_steps_mse: 0.0198 - val_loss: 0.0329 - val_last_10_time_steps_mse: 0.0174\n",
      "Epoch 5/20\n",
      "7000/7000 [==============================] - 2s 303us/sample - loss: 0.0326 - last_10_time_steps_mse: 0.0170 - val_loss: 0.0312 - val_last_10_time_steps_mse: 0.0153\n",
      "Epoch 6/20\n",
      "7000/7000 [==============================] - 2s 306us/sample - loss: 0.0307 - last_10_time_steps_mse: 0.0148 - val_loss: 0.0307 - val_last_10_time_steps_mse: 0.0148\n",
      "Epoch 7/20\n",
      "7000/7000 [==============================] - 2s 306us/sample - loss: 0.0297 - last_10_time_steps_mse: 0.0136 - val_loss: 0.0290 - val_last_10_time_steps_mse: 0.0129\n",
      "Epoch 8/20\n",
      "7000/7000 [==============================] - 2s 301us/sample - loss: 0.0285 - last_10_time_steps_mse: 0.0123 - val_loss: 0.0277 - val_last_10_time_steps_mse: 0.0117\n",
      "Epoch 9/20\n",
      "7000/7000 [==============================] - 2s 300us/sample - loss: 0.0278 - last_10_time_steps_mse: 0.0116 - val_loss: 0.0277 - val_last_10_time_steps_mse: 0.0115\n",
      "Epoch 10/20\n",
      "7000/7000 [==============================] - 2s 302us/sample - loss: 0.0272 - last_10_time_steps_mse: 0.0109 - val_loss: 0.0263 - val_last_10_time_steps_mse: 0.0102\n",
      "Epoch 11/20\n",
      "7000/7000 [==============================] - 2s 318us/sample - loss: 0.0268 - last_10_time_steps_mse: 0.0106 - val_loss: 0.0264 - val_last_10_time_steps_mse: 0.0103\n",
      "Epoch 12/20\n",
      "7000/7000 [==============================] - 2s 304us/sample - loss: 0.0263 - last_10_time_steps_mse: 0.0101 - val_loss: 0.0268 - val_last_10_time_steps_mse: 0.0104\n",
      "Epoch 13/20\n",
      "7000/7000 [==============================] - 2s 301us/sample - loss: 0.0259 - last_10_time_steps_mse: 0.0096 - val_loss: 0.0256 - val_last_10_time_steps_mse: 0.0095\n",
      "Epoch 14/20\n",
      "7000/7000 [==============================] - 2s 300us/sample - loss: 0.0258 - last_10_time_steps_mse: 0.0096 - val_loss: 0.0276 - val_last_10_time_steps_mse: 0.0115\n",
      "Epoch 15/20\n",
      "7000/7000 [==============================] - 2s 300us/sample - loss: 0.0254 - last_10_time_steps_mse: 0.0092 - val_loss: 0.0279 - val_last_10_time_steps_mse: 0.0120\n",
      "Epoch 16/20\n",
      "7000/7000 [==============================] - 2s 302us/sample - loss: 0.0251 - last_10_time_steps_mse: 0.0089 - val_loss: 0.0252 - val_last_10_time_steps_mse: 0.0092\n",
      "Epoch 17/20\n",
      "7000/7000 [==============================] - 2s 299us/sample - loss: 0.0250 - last_10_time_steps_mse: 0.0087 - val_loss: 0.0243 - val_last_10_time_steps_mse: 0.0080\n",
      "Epoch 18/20\n",
      "7000/7000 [==============================] - 2s 303us/sample - loss: 0.0248 - last_10_time_steps_mse: 0.0084 - val_loss: 0.0250 - val_last_10_time_steps_mse: 0.0093\n",
      "Epoch 19/20\n",
      "7000/7000 [==============================] - 2s 310us/sample - loss: 0.0242 - last_10_time_steps_mse: 0.0079 - val_loss: 0.0238 - val_last_10_time_steps_mse: 0.0076\n",
      "Epoch 20/20\n",
      "7000/7000 [==============================] - 2s 310us/sample - loss: 0.0241 - last_10_time_steps_mse: 0.0078 - val_loss: 0.0239 - val_last_10_time_steps_mse: 0.0074\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "model = keras.models.Sequential()\n",
    "model.add(keras.layers.InputLayer(input_shape=[None, 1]))\n",
    "for rate in (1, 2, 4, 8) * 2:\n",
    "    model.add(keras.layers.Lambda(\n",
    "        lambda inputs: keras.backend.temporal_padding(inputs, (rate, 0))))\n",
    "    model.add(keras.layers.Conv1D(filters=20, kernel_size=2, padding=\"VALID\",\n",
    "                                  activation=\"relu\", dilation_rate=rate))\n",
    "model.add(keras.layers.Conv1D(filters=1, kernel_size=1))\n",
    "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_10_time_steps_mse])\n",
    "history = model.fit(X_train, Y_train, epochs=20,\n",
    "                    validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is the original WaveNet defined in the paper: it uses Gated Activation Units instead of ReLU and parametrized skip connections, plus it pads with zeros on the left to avoid getting shorter and shorter sequences:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow import keras\n",
    "\n",
    "class GatedActivationUnit(keras.layers.Layer):\n",
    "    def __init__(self, activation=\"tanh\", **kwargs):\n",
    "        super().__init__(**kwargs)\n",
    "        self.activation = keras.activations.get(activation)\n",
    "    def call(self, inputs):\n",
    "        n_filters = inputs.shape[-1] // 2\n",
    "        linear_output = self.activation(inputs[..., :n_filters])\n",
    "        gate = keras.activations.sigmoid(inputs[..., n_filters:])\n",
    "        return self.activation(linear_output) * gate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "def wavenet_residual_block(inputs, n_filters, dilation_rate):\n",
    "    z = keras.backend.temporal_padding(inputs, (dilation_rate, 0))\n",
    "    z = keras.layers.Conv1D(2 * n_filters, kernel_size=2,\n",
    "                            dilation_rate=dilation_rate)(z)\n",
    "    z = GatedActivationUnit()(z)\n",
    "    z = keras.layers.Conv1D(n_filters, kernel_size=1)(z)\n",
    "    return keras.layers.Add()([z, inputs]), z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "n_layers_per_block = 10\n",
    "n_blocks = 3\n",
    "n_filters = 128\n",
    "n_outputs = 256\n",
    "\n",
    "inputs = keras.layers.Input(shape=[None, 1])\n",
    "z = keras.backend.temporal_padding(inputs, (1, 0))\n",
    "z = keras.layers.Conv1D(n_filters, kernel_size=2)(z)\n",
    "skip_to_last = []\n",
    "for dilation_rate in [2**i for i in range(n_layers_per_block)] * n_blocks:\n",
    "    z, skip = wavenet_residual_block(z, n_filters, dilation_rate)\n",
    "    skip_to_last.append(skip)\n",
    "z = keras.activations.relu(keras.layers.Add()(skip_to_last))\n",
    "z = keras.layers.Conv1D(n_filters, kernel_size=1, activation=\"relu\")(z)\n",
    "Y_proba = keras.layers.Conv1D(n_outputs, kernel_size=1, activation=\"softmax\")(z)\n",
    "\n",
    "model = keras.models.Model(inputs=[inputs], outputs=[Y_proba])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 7000 samples, validate on 2000 samples\n",
      "Epoch 1/2\n",
      "7000/7000 [==============================] - 265s 38ms/sample - loss: 0.0781 - val_loss: 2.6106e-05\n",
      "Epoch 2/2\n",
      "7000/7000 [==============================] - 276s 39ms/sample - loss: 2.6106e-05 - val_loss: 2.6106e-05\n"
     ]
    }
   ],
   "source": [
    "model.compile(loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\")\n",
    "history = model.fit(X_train, Y_train, epochs=2, validation_data=(X_valid, Y_valid))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this chapter we explored the fundamentals of RNNs and used them to process sequences (namely, time series). In the process we also looked at other ways to process sequences, including CNNs. In the next chapter we will use RNNs for Natural Language Processing, and we will learn more about RNNs (bidirectional RNNs, stateful vs stateless RNNs, Encoder–Decoders, and Attention-augmented Encoder-Decoders). We will also look at the Transformer, an Attention-only architecture."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Exercise solutions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. to 6."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "See Appendix A."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7. Embedded Reber Grammars"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we need to build a function that generates strings based on a grammar. The grammar will be represented as a list of possible transitions for each state. A transition specifies the string to output (or a grammar to generate it) and the next state."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "\n",
    "default_reber_grammar = [\n",
    "    [(\"B\", 1)],           # (state 0) =B=>(state 1)\n",
    "    [(\"T\", 2), (\"P\", 3)], # (state 1) =T=>(state 2) or =P=>(state 3)\n",
    "    [(\"S\", 2), (\"X\", 4)], # (state 2) =S=>(state 2) or =X=>(state 4)\n",
    "    [(\"T\", 3), (\"V\", 5)], # and so on...\n",
    "    [(\"X\", 3), (\"S\", 6)],\n",
    "    [(\"P\", 4), (\"V\", 6)],\n",
    "    [(\"E\", None)]]        # (state 6) =E=>(terminal state)\n",
    "\n",
    "embedded_reber_grammar = [\n",
    "    [(\"B\", 1)],\n",
    "    [(\"T\", 2), (\"P\", 3)],\n",
    "    [(default_reber_grammar, 4)],\n",
    "    [(default_reber_grammar, 5)],\n",
    "    [(\"T\", 6)],\n",
    "    [(\"P\", 6)],\n",
    "    [(\"E\", None)]]\n",
    "\n",
    "def generate_string(grammar):\n",
    "    state = 0\n",
    "    output = []\n",
    "    while state is not None:\n",
    "        index = np.random.randint(len(grammar[state]))\n",
    "        production, state = grammar[state][index]\n",
    "        if isinstance(production, list):\n",
    "            production = generate_string(grammar=production)\n",
    "        output.append(production)\n",
    "    return \"\".join(output)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's generate a few strings based on the default Reber grammar:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTXXTTVPXTVPXTTVPSE BPVPSE BTXSE BPVVE BPVVE BTSXSE BPTVPXTTTVVE BPVVE BTXSE BTXXVPSE BPTTTTTTTTVVE BTXSE BPVPSE BTXSE BPTVPSE BTXXTVPSE BPVVE BPVVE BPVVE BPTTVVE BPVVE BPVVE BTXXVVE BTXXVVE BTXXVPXVVE "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_string(default_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looks good. Now let's generate a few strings based on the embedded Reber grammar:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTBPVVETE BTBTSSSSSSSXXVVETE BPBTSSSXXTTTTVPSEPE BTBPTTVVETE BPBTXXTVVEPE BTBTXSETE BPBTSSSSSXXTTVPXVPXTTTVVEPE BPBTSSXXTVPSEPE BPBPTTTTTTTVPSEPE BTBTSXSETE BPBPTVPXVVEPE BPBPVVEPE BPBPTVVEPE BTBPTTVPXTTVPSETE BTBTSSXSETE BTBTXXTTVVETE BPBTSXSEPE BPBPTVPSEPE BTBPVVETE BPBTXXTTTVPXTVVEPE BPBPTTVPXTVVEPE BTBPVVETE BPBPTVPXVPXTVVEPE BTBPVVETE BPBTSXSEPE "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_string(embedded_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Okay, now we need a function to generate strings that do not respect the grammar. We could generate a random string, but the task would be a bit too easy, so instead we will generate a string that respects the grammar, and we will corrupt it by changing just one character:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_corrupted_string(grammar, chars=\"BEPSTVX\"):\n",
    "    good_string = generate_string(grammar)\n",
    "    index = np.random.randint(len(good_string))\n",
    "    good_char = good_string[index]\n",
    "    bad_char = np.random.choice(sorted(set(chars) - set(good_char)))\n",
    "    return good_string[:index] + bad_char + good_string[index + 1:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's look at a few corrupted strings:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTTTXXVVETE BPBTXXSPXTVVEPE BTBTXSPTE BPTTSXXTVPXVVEPE PPBPVPSEPE BTBPTVETE BPTTSSSSSXSEPE BPBSVPSEPE BTBPVVESE BPBTXSEPS BEBTXSETE XPBTXXTVPSEPE BTBPVVEPE BTXPTVVETE BTBPVXETE BVBTXSETE BPTTXXVPXVPSEPE BTBPXVPSETE STBPTTVPXVPXTVPSETE BPBPTVPSESE BPBPVEEPE ETBTXSETE BTBTXSVTE BPBTXXVPSEPP BTBTXXVPSETS "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_corrupted_string(embedded_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To be continued..."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "nav_menu": {},
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
